| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바공부
- 개발자취업
- 멀티스레드
- 자바프로그래밍
- 코딩인터뷰
- 코딩공부
- 코딩테스트팁
- 정렬
- 자바기초
- 자료구조
- 자바
- JVM
- 개발자팁
- 클린코드
- 메모리관리
- 백준
- 가비지컬렉션
- HashMap
- 프로그래머스
- 파이썬
- Java
- 알고리즘
- 예외처리
- 자바개발
- 코딩테스트준비
- 객체지향
- 프로그래밍기초
- 코딩테스트
- 개발공부
- 알고리즘공부
- Today
- Total
코드 한 줄의 기록
[코딩테스트 합격 비법] 실전처럼 연습하는 모의고사 시뮬레이션 루틴과 멘탈 관리 완벽 가이드 본문
안녕하세요! 오늘도 모니터 앞에서 알고리즘과 씨름하고 계신 예비 개발자 동료 여러분, 반갑습니다.
취업 준비를 하면서 가장 큰 산처럼 느껴지는 것, 역시 ‘코딩테스트(이하 코테)’죠? 저도 처음엔 단순히 백준이나 프로그래머스 레벨 올리기에만 급급했는데, 막상 서류 붙고 실제 테스트 창이 열리니 머릿속이 새하얗게 변하는 경험을 했습니다. 분명 아는 유형인데 손이 떨려서 타자가 안 쳐지는 그 느낌, 겪어보신 분들은 아실 거예요.
그래서 오늘은 제가 수많은 시행착오 끝에 정착한 ‘실전 시뮬레이션 공부법’을 아주 상세하게 공유해 보려고 합니다. 단순히 문제를 많이 푸는 게 아니라, ‘시험장과 똑같은 환경’을 내 방에 구현해서 내성을 기르는 과정입니다. 저도 이 방법으로 공부하면서 합격률이 눈에 띄게 올랐거든요. 긴 글이지만, 커피 한 잔 내려놓고 천천히 읽어보시면서 본인의 루틴에 어떻게 적용할지 고민해보셨으면 좋겠습니다.
왜 우리는 '모의고사'를 두려워할까?: 연습과 실전의 괴리 좁히기
우리가 평소에 문제 풀 때를 생각해볼까요?
좋아하는 음악 틀어놓고, 잘 안 풀리면 구글링도 살짝 하고, 화장실도 다녀오고, IDE(통합 개발 환경)의 자동완성 기능 도움도 받습니다.
하지만 실제 코딩테스트는 어떤가요?
- 제한된 시간의 압박: 타이머가 줄어드는 게 눈에 보입니다.
- 낯선 환경: 프로그래머스나 구름, 코딜리티 등 플랫폼 자체의 웹 에디터는 생각보다 불편합니다. 자동완성이 안 되거나 디버깅이 어렵죠.
- 검색 금지: 오직 내 머릿속에 있는 문법과 로직만으로 해결해야 합니다.
이 괴리감 때문에 평소 실력의 50%도 발휘 못 하고 떨어지는 경우가 너무 많습니다. 그래서 우리는 뇌를 ‘긴장 상태에서도 로직을 짜내는 모드’로 훈련시켜야 합니다. 운동선수들이 이미지 트레이닝을 하고 실전 같은 연습 경기를 뛰는 것과 똑같습니다.
실전 시뮬레이션 환경 세팅하기 (준비물과 마음가짐)
본격적으로 시뮬레이션을 시작하기 전, 물리적인 환경부터 바꿔야 합니다.
① 듀얼 모니터 끄기 & 노트북 하나로 연습
대부분의 코테는 부정행위 방지를 위해 화면 공유를 요구하거나 웹캠을 켭니다. 듀얼 모니터를 쓰다가 싱글 모니터로 시험을 보면 창 전환하느라 정신이 없습니다. 연습할 때부터 노트북 화면 하나만 켜두고, 화면 분할(문제 반, 코드 반)해놓고 푸는 연습을 하세요.
② IDE 자동완성 끄기 or 웹 에디터 사용
IntelliJ나 VS Code의 강력한 기능에 의존하면 문법을 잊어버립니다. String 메서드가 length()였는지 size()였는지 헷갈려서 5분을 날린다면 너무 억울하잖아요? 저는 아예 프로그래머스나 백준의 '제출' 탭(텍스트 에디터)에서 바로 코딩하는 연습을 합니다. 오타 하나하나를 내 눈으로 잡는 훈련이 필수입니다.
③ 타이머는 필수, 시간 배분 전략
보통 2시간에 3~4문제, 혹은 3시간에 4~5문제가 출제됩니다. 저는 연습할 때 ‘문제당 40분’을 데드라인으로 잡습니다.
- 0~5분: 문제 정독 및 엣지 케이스(Edge Case) 파악
- 5~15분: 종이와 펜으로 알고리즘 설계 (바로 키보드 잡지 마세요!)
- 15~35분: 구현 및 디버깅
- 35~40분: 예외 케이스 테스트 및 코드 정리
이 사이클을 몸에 익히는 게 핵심입니다.
단계별 시뮬레이션 루틴: 주 2회 '나만의 모의고사'
매일 이렇게 할 수는 없으니, 저는 주 2회(수요일, 토요일) 시간을 정해두고 모의고사를 칩니다. 방법은 다음과 같습니다.
Step 1: 문제 세트 구성하기 (랜덤 디펜스)
내가 자신 있는 탐색(DFS/BFS) 문제만 풀면 기분은 좋지만 실력은 안 늡니다. 강제로 낯선 문제를 만나야 합니다.
- 백준(BOJ): '문제집' 메뉴에서 삼성 SW 역량테스트 기출이나, 카카오 기출 등을 묶어둔 것을 활용합니다. 또는 크롬 확장 프로그램 중 'Random Defense' 기능을 제공하는 플러그인을 써서 티어(Silver 1 ~ Gold 3 정도)를 설정해두고 랜덤으로 뽑습니다.
- 프로그래머스: '모의고사' 탭이 따로 있는 거 아시죠? 그걸 활용해도 좋고, 레벨 2~3 문제 중 안 푼 것 4개를 무작위로 탭에 띄워놓고 시작합니다.
Step 2: 외부 소음 차단하지 않기 (선택 사항)
이건 팁인데, 실제 시험 볼 때 감독관의 메시지가 뜨거나 주변 소음이 있을 수 있습니다. 저는 가끔 카페 같은 약간의 소음이 있는 곳에서 연습하기도 합니다. 어떤 상황에서도 집중력을 유지하는 연습이죠.
Step 3: 120분, 멈추지 않는 마라톤
시작 버튼을 누르면 절대 멈추지 않습니다. 물 마시러 가는 것도 참습니다. 도중에 막히는 문제가 나오면 어떻게 할까요?
"과감히 넘기는 판단력"도 실력입니다. 1번 문제에서 30분을 썼는데 답이 안 보이면, 일단 2번으로 넘어가야 합니다. 실제 시험에서 1번 붙잡고 있다가 뒤에 쉬운 3, 4번을 못 푸는 경우가 태반입니다. 연습 때 이 '손절' 타이밍을 익혀야 합니다.
문제 풀이 중 멘탈 관리법 (Panic Control)
시뮬레이션 중에 분명히 머리가 하얘지는 순간이 옵니다. "어? 이게 왜 시간 초과지?" 싶을 때죠. 이때 제가 쓰는 '위기 탈출 메뉴얼'을 공유합니다.
① 입력 조건 다시 확인하기 (제약 조건)
문제가 안 풀릴 때는 90% 확률로 문제를 잘못 읽은 겁니다. N의 크기를 다시 보세요.
- N이 100,000 이상이다? -> O(N^2)인 이중 for문 쓰면 무조건 터집니다. O(NlogN)이나 O(N)으로 가야 합니다. (이분 탐색, 투 포인터, 그리디, DP 등)
- N이 20 이하다? -> 완전 탐색(DFS/BFS/백트래킹)으로 다 뒤져도 됩니다.
② 손코딩으로 돌아가기
키보드에서 손을 떼세요. 모니터만 뚫어져라 본다고 버그가 보이지 않습니다. 종이에 로직을 순서도로 그려보거나, 예제 입력을 하나씩 손으로 트레이싱(Tracing) 해보세요. "아, 여기서 인덱스가 범위를 벗어나는구나" 하는 게 종이 위에서 더 잘 보입니다.
③ 'print' 디버깅의 달인 되기
실전에서는 디버거를 못 쓰는 경우가 많습니다. console.log, print를 적재적소에 찍어서 중간 데이터가 내 의도대로 흐르는지 확인하는 속도를 높여야 합니다. 어디서 값이 튀는지 빠르게 찾는 것도 훈련입니다.
시뮬레이션이 끝난 후: 여기가 진짜 공부의 시작
2시간의 모의고사가 끝났습니다. 4문제 중 2문제를 풀고 2문제를 못 풀었다고 칩시다. 채점하고 "아 망했네" 하고 끄면, 그 2시간은 그냥 노동입니다. 실력이 느는 구간은 바로 '오답 분석(Review)' 시간입니다.
(1) 푼 문제도 다시 보자: 리팩토링
"맞았습니다!" 초록 글씨가 떴다고 넘어가지 마세요.
- 더 효율적인 방법은 없었나? 내 코드는 500ms인데 남들은 100ms라면, 이유를 찾아야 합니다.
- 가독성은 좋은가? 변수명을
a,b,tmp로 썼다면visited,curNode,nextCost등으로 바꿔보세요. 실제 면접에서 코드 리뷰를 시키기도 하는데, 이때 가독성이 점수에 반영됩니다. - 다른 사람의 풀이 훔치기: 프로그래머스 '다른 사람의 풀이'를 보면 감탄이 나오는 숏코딩이나 기발한 로직이 있습니다. "와, 이걸 이렇게 푼다고?" 하며 무릎을 치는 순간이 진짜 내 실력이 되는 순간입니다. 파이썬
zip,map활용이나 자바 스트림 활용법 등을 여기서 배웁니다.
(2) 못 푼 문제 분석: 왜 못 풀었는가?
이걸 냉정하게 적어야 합니다. 저는 노션(Notion)에 '코테 오답 노트' 페이지를 따로 만들었습니다.
- 유형을 몰랐다: 해당 알고리즘(예: 다익스트라, 유니온 파인드) 개념 공부 다시 하기. 이건 기본기 부족입니다.
- 접근은 맞았는데 구현을 못했다: 구현력 부족입니다. 비슷한 유형 10문제 더 풀어야 합니다.
- 시간 초과: 시간 복잡도 설계를 잘못했습니다. 내 로직의 Big-O를 계산해보고 어디를 줄일 수 있을지(가지치기, DP 메모이제이션 등) 고민해야 합니다.
- 엣지 케이스 실패: N=0일 때, N=1일 때, 모든 값이 같을 때 등 극단적인 케이스를 놓친 겁니다. 테스트 케이스를 스스로 만드는 능력을 길러야 합니다.
(3) 다시 풀어보기 (Self-Feedback)
못 푼 문제는 해설을 보고 이해한 뒤, 덮어두고 다음 날 아침에 다시 풉니다. 방금 해설 보고 바로 풀면 내 실력이 아니라 단기 기억력 테스트입니다. 하루 정도 지나고 다시 풀었을 때 깔끔하게 풀려야 진짜 내 것이 된 겁니다.
플랫폼별 특징과 대비 전략
제가 겪어본 주요 플랫폼들의 특징을 간단히 정리해 드릴게요.
① 프로그래머스 (카카오, 네이버 계열, 많은 스타트업)
- 특징: 함수 구현형(Solution 함수 완성).
- 팁: 입력값을 파싱할 필요가 없어 편하지만, 리턴 타입이나 인자 형식을 잘 맞춰야 합니다. 문제 설명이 길고 스토리텔링이 되어 있는 경우가 많아 독해력이 중요합니다.
- 전략: 문제 지문을 꼼꼼히 읽으세요. 지문에 숨겨진 힌트(예: "단, 사이클은 없다")를 놓치면 헤맵니다.
② 구름 (Goorm), 코딜리티, 해커랭크
- 특징: 주로 빈 화면에서 입력(
cin,input,Scanner)부터 출력까지 다 구현해야 하는 경우가 많습니다. (구름 등 일부) - 팁: 입력 형식을 처리하는 코드를 미리 외워두세요. Python의
sys.stdin.readline, Java의BufferedReader등 입출력 속도가 빠른 템플릿을 손에 익혀둬야 합니다. - 해외 플랫폼(Codility): 영어 지문입니다. 당황하지 말고 핵심 키워드(Constraints, Input, Output) 위주로 읽으세요. 영어 해석하다 시간 다 갑니다.
③ 백준 (BOJ)
- 특징: 날 것 그대로의 알고리즘 문제입니다.
- 팁: 채점 기준이 빡빡합니다. 여기서 골드 등급 정도를 안정적으로 풀면 웬만한 기업 코테는 통과합니다. 삼성 역량테스트 준비하시는 분들은 여기서 '구현/시뮬레이션' 카테고리를 미친 듯이 파야 합니다.
멘탈 관리: 우리는 기계가 아닙니다
마지막으로 꼭 드리고 싶은 말씀은 컨디션 관리입니다.
코딩테스트 준비는 장기 레이스입니다. 하루에 10시간씩 3일 하고 뻗는 것보다, 하루에 2시간씩 꾸준히 3개월 하는 사람이 이깁니다.
- 번아웃 주의: 문제가 안 풀리는 날은 그냥 덮으세요. 산책하고 오거나 맛있는 거 드세요. 뇌가 지치면 창의적인 로직이 절대 안 나옵니다.
- 비교 금지: 스터디를 하다 보면 "누구는 10분 만에 풀었다는데..." 하며 자괴감이 들 때가 있습니다. 그분들도 처음엔 2시간 걸렸습니다. 어제의 나하고만 비교하세요.
- 수면 패턴: 시험은 주로 오전에 봅니다. 밤낮 바뀌어서 새벽에 코딩하는 습관, 시험 일주일 전부터는 아침형으로 돌려야 합니다. 아침 10시에 뇌가 가장 쌩쌩하게 돌아가도록 세팅하세요.
결국 '자신감'은 '경험'에서 나옵니다
사실 코딩테스트는 떨어뜨리기 위한 시험이기도 하지만, "이 사람이 문제를 해결하기 위해 끈기 있게 달라붙는가?"를 보는 과정이라고 생각합니다.
실전 시뮬레이션을 반복하다 보면 어느 순간, 떨리는 마음보다는 "오, 이 문제 재밌겠는데? 한번 깨볼까?" 하는 도전 의식이 생기는 날이 옵니다. 그 단계가 오면 합격은 자연스럽게 따라옵니다.
저도 아직 배우는 입장이지만, 이 글을 읽는 여러분과 함께 성장하고 싶습니다. 여러분만의 꿀팁이나, 혹은 "이런 유형 때문에 미치겠어요!" 하는 고민이 있다면 댓글로 남겨주세요. 같이 머리 맞대고 고민해봐요.
우리는 코더(Coder)가 아니라 문제를 해결하는 해결사(Solver)가 될 사람들이니까요.
이번 주말, 각자의 방에서 치열하게 모의고사를 치를 여러분을 진심으로 응원합니다.
코딩테스트 통과의 지름길, 문제풀이 후 코드 리뷰 습관 만들기
당신이 놓치고 있는 것코딩테스트 준비하면서 매일 알고리즘 문제를 풀어본다. 하루에 3개, 5개, 때로는 10개까지. 맞았다고 나오면 다음 문제로 넘어가고, 틀렸다면 해설을 보거나 구글링해서
byteandbit.tistory.com
'코딩테스트' 카테고리의 다른 글
| 입사 코딩테스트 준비, 여러 언어로 효율적으로 문제 풀기 (0) | 2025.12.14 |
|---|---|
| 코딩테스트 합격자들이 쓰는 오답노트 활용법: 반복되는 실수에서 벗어나기 (0) | 2025.12.13 |
| 코딩테스트 통과의 지름길, 문제풀이 후 코드 리뷰 습관 만들기 (0) | 2025.12.07 |
| 입사 코딩테스트 준비, 강의와 교재는 이것들로 충분하다 (0) | 2025.11.30 |
| 코딩테스트 준비 슬럼프 극복 완벽 가이드 입사시험 동기 유지의 모든 것 (0) | 2025.11.24 |