010-2135-9730무료 상담
실수·체크리스트

코딩 테스트에서 시간 부족해지는 실수

코딩 테스트에서 시간이 부족해지는 가장 큰 이유는 코드를 짜는 속도보다 '다시 짜는 시간'입니다. 문제 조건을 끝까지 읽지 않고 시작하거나, 입력 크기를 확인하지 않아 시간 초과가 난 뒤 처음부터 다시 쓰는 경우가 대표적입니다. 한 문제에 매달려 나머지 문제를 보지도 못하는 것도 흔합니다. 실수마다 왜 시간이 새는지, 어떻게 막을 수 있는지를 정리했습니다.

읽는 시간 약 6분게임프로그래밍
게임프로그래밍 과정
이 글과 연결된 과정게임프로그래밍 과정 알아보기

처음 코딩을 배우면 문법은 이해했는데 막상 무엇을 만들어야 할지 막막해지는 시기가 옵니다. 수업에서는 이 시기를 짧게 넘기도록 작은 게임 하나를 정해 기능을 …

문제를 끝까지 읽지 않고 바로 코드를 쓰는 실수

문제를 보자마자 아는 유형이라고 생각해 바로 코드를 쓰기 시작하면, 중간에 '같은 값이 여러 개일 수 있다', '답이 없으면 -1을 출력한다' 같은 조건을 뒤늦게 발견합니다. 그때는 이미 짜 놓은 구조가 그 조건을 받아들이지 못해 크게 고쳐야 하는 경우가 많습니다.

코드를 쓰기 전에 문제를 처음부터 끝까지 읽고, 입력 형식, 출력 형식, 제한 조건, 특수한 경우를 따로 적으세요. 예제 입력과 출력을 손으로 따라가 보며 내가 문제를 정확히 이해했는지 확인합니다. 이 과정이 몇 분 걸리더라도, 잘못 이해한 채로 코드를 끝까지 쓴 뒤 다시 쓰는 시간보다 훨씬 짧습니다. 풀이 방법이 떠오르면 바로 코드로 옮기지 말고, 단계를 서너 줄로 먼저 적어 보세요. 그 짧은 설계에서 빠진 조건이 드러나는 경우가 많습니다.

입력 크기를 보지 않고 방법을 고르는 실수

가장 많은 시간을 잃는 실수입니다. 모든 경우를 다 확인하는 단순한 방법으로 예제는 금방 통과했는데, 제출하면 시간 초과가 납니다. 입력이 커지면 계산 횟수가 폭발적으로 늘어나는 방법을 골랐기 때문입니다. 이때는 처음부터 다른 방법으로 다시 짜야 해서 시간이 두 배로 듭니다.

코드를 쓰기 전에 입력의 최대 크기를 보고, 내가 생각한 방법이 그 크기에서 대략 몇 번의 계산을 하는지 어림해 보세요. 이를 시간 복잡도라고 합니다. 입력 크기가 작으면 단순한 방법도 괜찮지만, 크다면 정렬, 이분 탐색, 해시, 누적 합처럼 계산을 줄이는 방법이 필요합니다. 평소 문제를 풀 때 '입력 크기를 보고 어떤 방법을 떠올렸는지'를 기록해 두면 이 판단이 빨라집니다. 처음에는 어림이 틀려도 괜찮습니다. 반복할수록 입력 크기만 보고 쓸 수 있는 방법의 범위가 좁혀집니다.

입출력 자체가 느린 경우도 있습니다. 입력이 매우 많을 때는 언어별로 빠른 입출력 방법을 쓰지 않으면 알고리즘이 맞아도 시간 초과가 날 수 있습니다. 자주 쓰는 언어의 빠른 입출력 코드는 미리 외워 두세요.

한 문제에 매달려 다른 문제를 보지 못하는 실수

코딩 테스트의 문제는 반드시 쉬운 순서대로 나오지 않습니다. 첫 문제가 가장 어려울 수도 있습니다. 그런데 첫 문제부터 순서대로 풀려고 하면, 막힌 문제에 시간을 다 쓰고 풀 수 있었던 뒤쪽 문제를 놓치게 됩니다.

  1. 시작하자마자 모든 문제를 빠르게 훑어보고 난이도를 가늠하기
  2. 확실히 풀 수 있는 문제부터 먼저 풀기
  3. 문제마다 쓸 시간의 한계를 대략 정해 두기
  4. 한계를 넘기면 지금까지의 생각을 메모하고 다음 문제로 이동
  5. 남은 시간에 메모를 보며 막혔던 문제로 돌아가기

부분 점수가 있는 테스트인지도 미리 확인해 두면 좋습니다. 부분 점수가 있다면 완벽한 풀이가 떠오르지 않아도 작은 입력에서 맞는 풀이를 먼저 제출해 두는 것이 이득일 수 있습니다.

예외 입력에서 디버깅으로 시간을 쓰는 실수

예제는 통과했는데 제출하면 틀렸다고 나올 때, 무엇이 틀렸는지 몰라 코드 전체를 이리저리 고치다 시간이 다 갑니다. 대부분은 예외적인 입력을 생각하지 않아서입니다. 입력이 하나뿐인 경우, 모든 값이 같은 경우, 값이 가장 크거나 작은 경우, 정답이 0이 되는 경우가 대표적입니다.

코드를 제출하기 전에 이런 입력을 직접 몇 개 만들어 넣어 보세요. 정수 범위를 넘는 계산이 있는지도 확인합니다. 큰 수끼리 곱하거나 많이 더하면 자료형의 범위를 넘어 엉뚱한 값이 나올 수 있습니다. 디버깅할 때는 출력문을 여기저기 넣기보다, 중간 값을 확인할 위치를 정해 두고 작은 입력으로 손계산과 비교하는 것이 빠릅니다. 확인이 끝나면 디버깅용 출력문을 지우는 것도 잊지 마세요. 남아 있으면 출력 형식이 틀려 오답이 됩니다.

손에 익지 않은 기본 코드와 낯선 환경

알고리즘은 알고 있는데 막상 코드로 쓰려면 정렬 기준 함수 작성법이나 우선순위 큐 사용법이 기억나지 않아 시간을 쓰는 경우도 많습니다. 너비 우선 탐색, 깊이 우선 탐색, 이분 탐색처럼 자주 쓰는 코드는 보지 않고 쓸 수 있을 만큼 반복해 두세요.

테스트 환경도 미리 경험해 두는 것이 좋습니다. 온라인 테스트는 평소 쓰던 개발 도구가 아닌 웹 편집기에서 보는 경우가 많아서, 자동 완성이 없거나 단축키가 다릅니다. 응시 안내에 연습 환경이 제공된다면 꼭 들어가 보고, 평소에도 자동 완성 없이 짜는 연습을 일부 섞어 두세요. 게임 회사는 C++을 많이 쓰지만 코딩 테스트 언어 선택은 회사마다 다르니, 안내를 확인하고 가장 빠르게 쓸 수 있는 언어로 준비합니다.

이름과 연락처만 남기면 담당 멘토가 연락드립니다상담 가능 시간 평일·주말 · 전화 010-2135-9730

실전처럼 시간을 재는 연습이 답입니다

위의 실수는 대부분 시간을 재지 않고 연습할 때는 드러나지 않습니다. 일주일에 한 번이라도 실제 테스트처럼 정해진 시간에 여러 문제를 한꺼번에 풀어 보세요. 끝난 뒤에는 문제마다 읽기, 설계, 구현, 디버깅에 쓴 시간을 대략 적어 보면 내가 어디서 시간을 잃는지 분명히 보입니다.

코딩 테스트는 게임 프로그래머 채용의 한 관문일 뿐이고, 포트폴리오와 면접도 함께 준비해야 합니다. 어떤 비중으로 준비할지 정하기 어렵다면 SBS아카데미게임학원 게임프로그래밍 과정 상담에서 지금 실력과 지원 일정에 맞춰 코딩 테스트와 포트폴리오 준비 순서를 함께 정해 볼 수 있습니다.

자주 묻는 질문

코딩 테스트 문제는 하루에 몇 개씩 풀어야 하나요?

정해진 개수보다 꾸준함과 복습이 중요합니다. 틀린 문제를 며칠 뒤 다시 풀어 보는 습관이 새 문제를 많이 푸는 것보다 효과적일 때가 많습니다.

풀이가 떠오르지 않을 때 바로 해설을 봐도 되나요?

일정 시간 고민한 뒤 해설을 보는 것은 괜찮습니다. 다만 해설을 본 뒤에는 보지 않고 다시 직접 짜 보고, 어떤 단서로 그 방법을 떠올려야 했는지 정리해 두세요.

TIP내 상황에 맞는 답이 필요하다면 무료 상담에서 지금 수준과 목표를 기준으로 구체적으로 안내해 드립니다.

가까운 캠퍼스에서 게임프로그래밍 알아보기

사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.

함께 읽으면 좋은 글

Free consulting

게임프로그래밍, 내 상황에서는 어떻게 시작할까요?

글에서 다룬 내용을 내 실력과 목표에 맞춰 담당 멘토가 구체적으로 정리해 드립니다.

  1. 상담 신청서 접수
  2. 담당 멘토가 연락드림
  3. 방문 또는 전화로 진로·과정 상담
전화로 바로 상담010-2135-9730
전화 상담상담 신청