시각 처리는 코딩 테스트에서 꽤 자주 나오는 주제 중 하나입니다. 특히 datetime을 처리하는 것은 나올 수 있는 중요 패턴인데요. 대충 YYYY-MM-DD hh:mm:ss 패턴이 주어지던지, 아니면 YYYY-MM-DD hh:mm:ss.xxx 이렇게 시각이 주어지고 선후 관계를 처리해야 하는 경우가 있고, 해당 시각으로부터 x분만큼 지난 경우를 계산해야 하는 경우가 있어요. 여기서 중요한 것은, 문제 상황을 빠르게 파악하는 것입니다. 시각을 기준 시각으로부터 경과된 초를 구해야 하는 것인지, 단순히 선후 관계를 파악하면 되는 것인지를 파악하는 것이 먼저입니다. 왜냐하면, 전자는 계산을 해야 하고, 후자는 그렇지 않아도 되기 때문입니다. 이게 무슨 소리인지, 2주 전에 열렸던 모의 코딩테스트에 나온 문..
코딩테스트 검색 결과
코딩 테스트에서 많이 나오는 것 중에 하나는 조합을 구현하는 것입니다. 물론, 이것이 단독으로 나오는 경우는 매우 드뭅니다. 보통, 구현까지 요구하는 경우가 많습니다. 여기서 더 어려워 지면, 대놓고 조합으로 푸세요. 라고 하지 않고, 조건을 숨겨놓는 경우도 있는데요. 이 문제가 그에 속합니다. 이번 시간에는 조합을 어떻게 구현하는지 정도만 언급하도록 하겠습니다. n개 중에 m개를 뽑는다고 해 봅시다. 뽑은 것만 중요한 게 조합입니다. 순서가 중요하진 않아요. 그러면, 하나를 뽑으면서, 뽑을 수 있는 집합을 줄여나간다고 봐도 될까요? 예를 들어보겠습니다. 카드가 5개 있습니다. 이 중 3개를 뽑아야 합니다. 뽑은 것이 중요하니, 전략을 하나 세워봅시다. 일단, 먼저 뽑은 카드에 적혀있는 수가 나중에 뽑은..
카카오 호텔 방 배정 문제를 보겠습니다. 우리는 이 쿼리에 대한 답을 효율적으로 처리해야 합니다. 단, 방의 갯수는 10^12개 이하입니다. 10^12개에 대한 정보를 모두 담을 수는 없습니다. 어떻게 해야 할까요? 대신에 우리는 이런 아이디어를 하나 생각해 볼 수 있습니다. 그러면, 구간 정보를 어떻게 담아야 할까요? 방이 총 5개가 있다고 생각해 보겠습니다. 먼저, 초기 상태는 모든 방이 비어 있을 겁니다. 그러면, [1,5]가 비어 있었다는 정보를 넣습니다. 이제, 3보다 크거나 같은 비어 있는 방 중에서, 가장 작은 번호를 가지는 방을 빼 보겠습니다. 이를 K=3인 쿼리라 하겠습니다. 그러면 이 때 어떻게 나누어 질까요? 구간이 [1,2] [4,5]로 나누어 집니다. 이것을 어떻게 관리해 볼까요?..
코딩 테스트를 보기 위해서는, 기본적으로 제한 조건을 읽을 줄 알아야 합니다. 단순히 n이 30보다 작고 m이 15보다 작은 조건이 들어오는군이 아니라, 왜 출제자가 이런 조건을 주었는지 곰곰히 생각해 보자는 것입니다. 이게 그렇게 어렵지 않은 것 같지만, 저는 솔직히 쉽지 않았습니다. 문제를 읽고 바로 이거네? 하고 들어가는 습관이 있다 보니, 이런 세세한 조건을 놓치는 경우가 다반사였습니다. 코테에서 이런 일이 발생했다면 탈락하실 확률이 높아집니다. 왜 제가 코테에서 물을 많이 먹었는지 단박에 알 수 있는 무서운 말입니다. 사실 조언해 줄 실력도 못 되지만, 작년에 물을 많이 먹으면서 제가 부족했던 점을 복기해 보았습니다. 그렇게 생각해 주시면 좋을 듯 싶습니다. 자. 그러면 어떻게 조건을 분석해야 ..
최근댓글