"알고리즘은 맞는데 왜 시간 초과지?" 하반기 코테 시즌마다 스터디 톡방에서 반복되는 질문이다.
면접장에서 AI를 쓸 수 있다는 말을 처음 들으면 당황스럽다. 지금까지 코테 준비라 하면 LeetCode 문제 수백 개를 머릿속에 우겨넣는 거였는데, 이제 옆에 Claude나 Gemini가 앉아 있다니.
"선수과목"이라는 단어가 문제에 등장하면 머릿속에서 알고리즘들이 서로 손을 든다. DFS?
구글과 메타가 올해 코딩 면접을 잇따라 바꿨다. 방향은 같다 — 빈 에디터에서 알고리즘을 구현하는 대신, 이미 짜여진 코드를 읽고 버그를 찾고 최적화하라는 것.
DP 문제를 30분째 붙잡고 있는 사람 옆에 가서 "dp[i] 정의가 뭐야?"라고 물어보면, 대부분 우물쭈물한다.
코테에서 "연속 부분 배열" 또는 "연속된 K개 원소"라는 표현이 보이면, 반사적으로 for문 안에 for문을 작성하는 사람이 많다. 간단하니까.
코딩테스트 단골 유형 중에 "그룹 나누기"가 있다. 노드끼리 연결하고, 특정 두 노드가 같은 그룹인지 판별하는 문제.
지난 5월, 구글이 코딩 면접에서 Gemini 사용을 허용한다고 발표했다. 10년 넘게 "화이트보드 앞에서 혼자 풀어라"가 기본이던 실리콘밸리의 룰이 흔들리는 순간이다.
"최단 거리를 구하시오." 이 문장 보자마자 다익스트라 코드를 복붙하는 습관, 나도 있었다.
백트래킹 문제를 풀 때 재귀 구조를 짜는 건 어렵지 않다. 진짜 어려운 건 "어디서 멈출 것인가"다.
코딩테스트에서 "연속된 부분 배열"이라는 문구가 나오는 순간, 머릿속에서 이중 for문이 떠오르면 이미 시간 초과 루트에 올라탄 거다. 대부분의 연속 구간 문제는 슬라이딩 윈도우 하나면 O(n)에 정리된다.
"최솟값의 최댓값을 구하시오." 이 문장을 읽고 바로 이분 탐색이 떠오르면, 이미 절반은 맞힌 거다.