첨단 코테 준비하는 방법, 막막할 때 이렇게 시작하면 덜 흔들립니다

처음엔 문제 수보다 방향이 더 중요해요
얼마 전 취업 준비 중인 지인이 첨단 코테를 준비한다며 문제집을 세 권이나 샀다고 하더라고요. 그런데 막상 며칠 풀어보니 쉬운 문제는 금방 풀리는데, 실제 시험처럼 시간이 걸리는 문제는 손도 못 대겠다고 했습니다. 사실 코딩 테스트는 많이 푸는 것도 중요하지만, 초반에는 어떤 유형을 어떤 순서로 익히는지가 훨씬 크게 작용합니다.
특히 첨단 코테라고 부르는 시험은 보통 일반적인 구현 문제만 나오지 않습니다. 인공지능, 데이터, 플랫폼, 반도체, 모빌리티처럼 기술 기반 직무와 연결된 채용에서는 문제 설명이 길고 조건이 촘촘한 경우가 많습니다. 그래서 단순히 알고리즘 이름만 외우면 중간에 막히기 쉽습니다.
초보 단계라면 먼저 구현, 문자열, 배열, 정렬, 해시부터 잡는 게 좋습니다. 이 다섯 가지는 난도가 높지 않아 보여도 실제 시험에서 시간 차이를 크게 만듭니다. 예를 들어 입력값이 10만 개일 때 중복을 세어야 한다면, 단순 반복문으로는 늦고 해시 구조를 써야 합니다. 이런 감각이 쌓여야 뒤에서 그래프나 동적 계획법을 배울 때도 덜 흔들립니다.
첨단 코테에서 자주 막히는 부분
많은 사람이 어려워하는 지점은 알고리즘 자체보다 문제를 읽는 단계입니다. 문제에서 조건이 7개, 8개씩 나오면 머릿속에서 한 번에 처리하려고 하다가 놓치는 부분이 생깁니다. 근데 실제 시험에서는 이 작은 조건 하나가 오답을 만듭니다.
예를 들어 “같은 점수라면 먼저 제출한 사람을 우선한다” 같은 문장이 뒤쪽에 붙어 있으면 정렬 기준이 하나 더 생깁니다. “이동할 수 없는 칸은 건너뛴다”는 조건이 있으면 단순 좌표 이동이 아니라 예외 처리가 필요합니다. 이런 문장은 문제를 다 읽고 나서 따로 적어두는 습관이 꽤 효과적입니다.
- 입력 크기를 먼저 보고 시간 복잡도를 예상하기
- 조건 문장을 체크 표시하듯 분리하기
- 예제 입력을 손으로 한 번 따라가기
- 예외 상황을 최소 3개 직접 만들어보기
- 풀이를 코드로 옮기기 전에 변수 역할을 정하기
솔직히 이 과정은 처음엔 느립니다. 하지만 시험장에서 40분 동안 헤매는 것보다, 연습할 때 5분 더 쓰는 편이 훨씬 낫습니다. 첨단 코테는 문제를 빨리 읽는 시험이라기보다 조건을 정확히 해석하는 시험에 가깝습니다.
준비 순서는 이렇게 잡으면 좋아요
처음부터 어려운 그래프, 다익스트라, 세그먼트 트리 같은 이름을 보면 압박감이 큽니다. 물론 상위 난도에서는 이런 내용이 나올 수 있지만, 대부분의 지원자에게 먼저 필요한 건 기본기를 안정적으로 만드는 일입니다. 저는 4주 정도를 기준으로 나누는 방식을 추천합니다.
1주차: 구현과 문자열
하루에 2문제 정도면 충분합니다. 대신 풀이를 본 뒤 바로 넘어가지 말고, 같은 문제를 20분 뒤 다시 빈 화면에서 작성해보는 게 좋습니다. 문자열 파싱, 조건 분기, 리스트 조작은 첨단 코테에서 정말 자주 쓰입니다. 데이터 전처리 느낌의 문제가 나올 때도 대부분 여기서 시작됩니다.
2주차: 정렬, 해시, 스택과 큐
이 구간부터는 자료구조 선택이 중요해집니다. 같은 문제라도 리스트로 풀면 시간 초과가 나고, 해시나 큐를 쓰면 바로 통과되는 경우가 많습니다. 예를 들어 최근 5개 요청만 유지해야 하는 문제라면 큐가 자연스럽고, 사용자별 기록을 빠르게 찾아야 한다면 해시가 편합니다.
3주차: 완전탐색과 그래프
완전탐색은 무식해 보이지만 생각보다 자주 쓰입니다. 입력 크기가 작다면 복잡한 알고리즘보다 모든 경우를 확인하는 코드가 더 안정적입니다. 그래프는 BFS와 DFS부터 익히면 됩니다. 지도 탐색, 네트워크 연결, 최단 이동 횟수 같은 문제는 대부분 여기서 갈립니다.
4주차: 시간 제한 훈련
마지막 주에는 새 개념을 늘리기보다 시험처럼 푸는 연습이 필요합니다. 90분에 2문제, 120분에 3문제처럼 시간을 정해놓고 풀면 자신의 약점이 바로 보입니다. 구현은 빠른데 반례를 못 잡는 사람도 있고, 아이디어는 떠오르는데 코드가 느린 사람도 있습니다. 이 차이를 알아야 남은 시간을 제대로 쓸 수 있습니다.
실전에서 점수를 지키는 습관
첨단 코테는 모든 문제를 완벽히 풀어야만 통과하는 시험은 아닌 경우가 많습니다. 오히려 쉬운 문제를 정확히 맞히고, 중간 난도에서 부분 점수를 확보하는 전략이 현실적입니다. 어려운 문제 하나에 70분을 쓰다가 앞 문제까지 흔들리는 상황이 제일 아깝습니다.
저라면 시험이 시작되면 먼저 전체 문제를 3분 정도 훑습니다. 그리고 바로 풀 수 있는 문제, 조금 고민하면 되는 문제, 나중에 볼 문제로 나눕니다. 첫 문제에서 30분 이상 막히면 과감히 넘어가는 것도 필요합니다. 실전에서는 자존심보다 점수가 우선입니다.
- 함수 이름과 변수 이름을 너무 짧게 만들지 않기
- 입력 예제 외에 빈 값, 최댓값, 중복값을 넣어보기
- 출력 형식을 마지막에 다시 확인하기
- 시간이 부족하면 주석보다 작동하는 코드에 집중하기
- 풀 수 있는 문제부터 점수를 확보하기
그리고 언어 선택도 생각보다 중요합니다. 파이썬은 구현 속도가 빠르지만 시간 제한이 빡빡한 문제에서는 자료구조 선택을 더 신경 써야 합니다. 자바나 C++은 코드가 길어질 수 있지만 실행 속도 면에서 유리한 상황이 있습니다. 평소에 쓰던 언어로 가는 게 가장 안정적이고, 시험 직전에 언어를 바꾸는 건 추천하기 어렵습니다.
공부량보다 피드백이 더 오래 갑니다
문제를 많이 풀었는데 실력이 잘 안 느는 사람을 보면 오답 기록이 없는 경우가 많습니다. 틀린 문제를 다시 보지 않으면 비슷한 실수를 반복하게 됩니다. 오답 기록이라고 해서 거창할 필요는 없습니다. “정렬 기준 하나 빼먹음”, “최댓값 범위 착각함”, “큐를 리스트 pop으로 처리해서 느렸음”처럼 짧게 적어도 충분합니다.
첨단 코테를 준비할 때는 일주일에 한 번 정도 자신의 풀이를 다시 보는 시간이 있으면 좋습니다. 그때 코드를 예쁘게 고치는 것보다 왜 틀렸는지, 다음엔 어떻게 알아차릴 수 있는지를 보는 게 더 중요합니다. 사실 실력은 맞힌 문제보다 틀린 문제를 다루는 방식에서 더 많이 자랍니다.
준비 기간이 짧다면 욕심을 줄이고 기본 유형을 확실히 가져가는 편이 낫습니다. 구현, 해시, 정렬, BFS만 안정적으로 잡아도 풀 수 있는 문제가 꽤 많습니다. 첨단 코테는 대단한 천재성을 확인하는 자리라기보다 제한된 시간 안에서 조건을 읽고, 적절한 도구를 고르고, 끝까지 작동하는 코드를 만드는지 보는 과정에 가깝습니다. 그래서 차분하게 쌓은 습관이 시험장에서 생각보다 든든하게 버텨줍니다.
