백준이 사라진 뒤 알고리즘을 어디서 풀어야 할지 막막하던 차에 코드트리로 자리를 옮겼고, 가장 먼저 한 일이 갭체크였다. 10분 남짓한 진단이 끝나자 그래프가 내 수준을 유형별로 갈라서 보여줬다. 그때 '불안정'(노랑)으로 잡힌 게 완전탐색 Ⅱ와 시뮬레이션 Ⅰ, 아예 '부족'(빨강)으로 뜬 게 완전탐색 Ⅲ와 백트래킹이었다. 백트래킹은 그래도 많이 풀어봤다고 자신했는데, 막상 진단에서는 15분을 붙들고 두 번을 시도하고도 끝내 못 풀었다. 시뮬레이션 한 문제는 네 번을 틀린 끝에 18분 만에 겨우 통과했다.
한 달 전 1차 갭체크 결과 그래프
그때 세운 목표는 단순했다. 빨간 영역을 하나씩 메워서 여러 기업의 코딩테스트를 감당할 수 있는 상태까지 끌어올리는 것. 한 달이 지났다. 목표를 향해 잘 가고 있는지 확인할 방법은 결국 같은 진단을 다시 받아보는 것뿐이었다.
약점을 좁히려고 한 달간 한 일
한 달 동안 한 일을 돌아보면, 기능을 구경한 게 아니라 그 빨간 두 영역을 좁히는 데 쓴 시간이었다.
완전탐색과 시뮬레이션부터 다시 밟았다. 갭체크가 불안정으로 짚은 시뮬레이션 Ⅰ과 완전탐색을 코드트레일로 열어, 기본 문제 → 연습 문제 → 테스트 문제 순으로 다시 올라갔다. 무작정 많이 푸는 방식이 아니라, 개념을 본 뒤 변형 문제에 적용하고 마지막에 힌트 없이 풀어내는 3단계라 접근법 자체가 손에 남았다.
매일 앉는 환경부터 만들었다. 알림톡을 켜서 까먹은 날 저녁에 다시 접속하게 만들었고, 깃허브 자동 연동으로 정답을 받으면 잔디가 알아서 심겼다. 의지로 버티는 대신 환경이 대신 찔러주게 한 셈이다.
깃허브 잔디 한 달치
틀린 문제를 모아두기 시작했다. 4회차에 만든 북마크 오답노트가 컸다. '한번에 못 풀었던 문제'와 '해설이 내 풀이보다 나았던 문제' 두 폴더로 나눠, 찜찜한 문제는 그 자리에서 담아뒀다.
솔직히 한 달 내내 매끄럽기만 했던 건 아니다. 2주차에 해설을 보고 "변환 로직을 함수로 빼는 모듈화 습관을 들이자"고 적어놓고, 3주차 진수 변환 문제에서는 또 main()에 전부 때려넣었다. 같은 다짐을 같은 자리에서 반복한 기록이 블로그에 그대로 남아 있다.
다시 응시한 갭체크, 비포와 애프터
한 달간의 학습이 진단 결과를 실제로 움직였는지 보려고, 5월 10일 이후 한 달 만에 갭체크를 다시 응시했다.
2차 갭체크 결과
1차(5/10) · 2차(6/9) 핵심 요약 비교
유형
1차 (5/10)
2차 (6/9)
시뮬레이션 Ⅰ
불안정(노랑)
약점 목록에서 빠짐
완전탐색 Ⅱ
불안정(노랑)
약점 목록에서 빠짐
완전탐색 Ⅲ
부족(빨강)
2분 45초
백트래킹
부족(빨강) · 끝내 못 풂
한 번에 해결
DP Ⅰ / BFS
—
새로 '부족'(빨강)
한 달 전 빨갛고 노랗던 네 유형(시뮬레이션 Ⅰ, 완전탐색 Ⅱ·Ⅲ, 백트래킹)이 이번 진단의 약점 목록에서 전부 빠졌다. 트레일에서도 '부족'으로 찍힌 빨강 구간이 눈에 띄게 줄었고, 앞쪽 기초 구간은 한 달 전엔 없던 '완벽하게 이해한 범위'로 넘어가 있었다.
대신 새 빨간불이 켜졌다. DP Ⅰ과 BFS. 둘 다 이번엔 손도 못 대고 건너뛴 문제다. 약점이 사라진 게 아니라 전선이 한 칸 위로 올라갔다는 뜻이다. 시뮬레이션과 완전탐색을 붙들고 있던 한 달이 끝나니, 그 너머의 그래프 탐색과 동적 계획법이 다음 벽으로 모습을 드러냈다.
한 달 전 못 풀던 문제가, 이번엔 풀렸다
비교표의 숫자보다 더 실감 났던 건 백트래킹 한 문제였다.
저번 갭체크이번에 본 갭체크
한 달 전 1차 갭체크 때, 백트래킹 유형 앞에서 15분을 붙들고 두 번을 시도하다 결국 빈칸으로 넘겼다. 그땐 '부족'이라는 빨간 딱지가 당연하게 느껴졌다. 그 백트래킹이 이번 2차 갭체크에 다시 나왔다. 같은 유형인 걸 알아챈 순간 한 달 전의 막막함부터 떠올랐는데, 이번엔 손이 먼저 움직였고 한 번에 통과가 떴다.
점수판의 색이 '부족'에서 빠진 것보다, '한 달 전엔 손도 못 댔는데 지금은 풀고 있다'는 그 감각이 더 분명한 신호였다. 약점이 강점으로 바뀐다는 게 이런 거구나 싶었다.
갭체크에 한 가지 바라는 점
갭체크는 이번 회차에 도달한 유형별 난이도는 잘 보여주지만, 1차와 2차 결과를 한 화면에 겹쳐서 "어디가 얼마나 올랐는지" 추이로 보여주는 기능은 없다. 지금은 두 결과를 각각 캡처해 눈으로 대조해야 한다. 성장 그래프를 겹쳐 그려주거나, 직전 응시 대비 변화를 화살표로 표시해주면 '중간점검'이라는 이름에 더 맞는 도구가 될 것 같다. 한 달을 버틴 사람에게 가장 보고 싶은 건 결국 "그래서 내가 올랐나"이기 때문이다.
최종 목표와 다짐
한 달 전 갭체크의 빨간 영역을 좁히는 게 목표였다면, 최종 목표는 그보다 멀리 있다. 삼성을 비롯한 대기업 코딩테스트를 막힘 없이 통과하는 것. 이번 갭체크는 그 길에서 내가 어디까지 왔는지를 정확히 짚어줬다. 완전탐색과 시뮬레이션은 일단 빨간색에서 빠졌고, 대신 DP Ⅰ과 BFS라는 다음 관문이 새로 빨갛게 떴다.
방법은 이미 한 달이 증명했다. 갭체크로 약점을 진단하고, 코드트레일로 메우고, 북마크로 틀린 자리를 다시 밟는다. 똑같은 사이클을 이번엔 그래프 탐색과 동적 계획법에 걸어볼 차례다. 다음 중간점검에서는 지금 손도 못 대고 건너뛴 DP Ⅰ과 BFS 자리에 초록색이 들어와 있는 것, 그게 다음 목표다. 한 달마다 빨간 칸이 초록으로 바뀌는 것으로 뿌듯함 더해져갈 것이다.