| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
코드 한 줄의 기록
코딩테스트 준비 슬럼프 극복 완벽 가이드 입사시험 동기 유지의 모든 것 본문
어느 날 갑자기 손가락이 움직이질 않는다. 어제도 풀던 그 문제인데 오늘은 도대체 왜 이렇게 어려울까. 모니터를 들었다 놨다를 반복하고, 결국 휴대폰을 집어든다. 시간만 흐른다. 1시간, 2시간, 3시간. 이 상태가 며칠, 아니 몇 주간 계속된다면? 그건 단순한 피로가 아니라 진짜 슬럼프다. 코딩테스트 준비하는 거의 모든 사람이 이 길을 지나간다. 나도 겪었고, 주변에서도 봤다. 하지만 여기가 끝이 아니다. 이 글에서는 실제로 슬럼프를 극복했던 방법들을 공유한다. 혼자만의 경험이 아니라, 많은 개발자들이 써먹은 실전 팁들이 담겨있다. 준비하면서 내가 직접 도움 받았던 전략들과 주변 사람들이 성공한 방법들까지 모두 모아서 정리했다.
코딩테스트 준비 중 슬럼프, 왜 생길까?
슬럼프가 갑자기 닥친다는 건 누구나 안다. 하지만 정확히 뭐 때문에 생기는지 아는 사람은 적다. 원인을 모르면 극복도 어렵다. 의사가 진단 없이 약을 처방하지 않는 것처럼, 우리도 먼저 자신의 상태를 정확히 파악해야 한다.
첫 번째는 반복 피로다. 처음엔 신선했다. 새로운 알고리즘을 배우고, 처음 푸는 문제를 풀 때의 그 쾌감. 그 신선함이 정말 좋았다. 하지만 한 달, 두 달이 지나면 어떨까? 똑같은 패턴의 문제들이 계속 반복된다. DFS, BFS, 정렬, 그리디, 동적 계획법... 처음엔 흥미로웠던 개념들도 이제는 진부하게 느껴진다. "또 DFS네", "또 정렬 문제네" 이런 식의 생각이 들기 시작하면 위험 신호다. 뇌가 같은 자극에 익숙해져서 도파민 분비가 줄어들기 시작했다는 뜻이다.
두 번째는 성장의 정체감이다. 초반에는 변화가 눈에 띈다. 첫 주에는 20문제를 푼 경험이 없었고, 두 번째 주에는 30문제를 풀었다. 이런 식으로 숫자가 오르니까 동기가 유지된다. 기분도 좋고 뿌듯하다. 하지만 어느 순간 성장 곡선이 평평해진다. 지난주나 이번주나 푸는 문제의 수도 비슷하고, 실력도 크게 나아진 것 같지 않다. 이 평탄한 구간에서 많은 사람들이 절망한다. "내가 이 정도가 한계인가?" 이런 생각까지 들 수 있다.
세 번째는 보이지 않는 마감 압박이다. 입사 마감일이 계속 다가온다. 아직도 못 푼 주제들이 있다. 이미지 처리, 구간 합 쿼리, 세그먼트 트리, 위상 정렬... 뭘 해야 할지 모르겠고, 모든 게 급해 보인다. 시간이 없다는 느낌이 든다. 이 불안감이 쌓이면 쌓일수록 공부할 때도 집중이 안 된다. 역설적이지만, 너무 필사적일 때는 오히려 효율이 떨어진다. 불안해서 마구잡이로 문제를 풀다 보니 제대로 된 학습이 되지 않는 악순환이 생긴다.
네 번째는 작은 실패들의 누적이다. 처음에는 문제를 못 풀어도 "아, 이건 내가 못 푼 거니까 배워야겠다"라는 마음이었다. 실패가 학습 기회로 느껴졌다. 하지만 계속해서 실패를 겪으면? "내가 잘못 생각했나? 내 방법이 틀렸나?" 이런 식의 자기의심이 쌓인다. 자신감이 점점 떨어진다. 실제로는 아무것도 틀린 게 아닌데 말이다. 단순히 아직 못 배운 것뿐이다. 하지만 그 감정은 속일 수 없다. 불안감과 의심은 그렇게 커진다.
다섯 번째는 명확한 피드백의 부재다. 직장에서는 상사가 평가를 해준다. 시험을 보면 성적이 나온다. 하지만 코딩테스트 준비할 때는 어떨까? 풀었는데 합격 시험을 못 봐서 정확한 피드백이 없다. "내가 이 정도 수준이 맞나?", "내가 준비가 충분한가?" 이런 의문이 계속 생긴다. 객관적인 지표가 없으면 불안감은 더 커진다.
이 다섯 가지가 복합적으로 작용하면 슬럼프가 온다. 그리고 슬럼프가 왔다는 건, 동시에 너는 이제 왕초보가 아니라는 뜻이다. 초급 단계를 벗어났다는 증거다. 이 상태는 약간의 변화와 올바른 전략만으로도 극복할 수 있다.
슬럼프 극복의 첫 단계: 문제를 정확히 인식하기
슬럼프에 빠지면 사람들은 보통 두 가지 중 하나를 한다. 자책하거나, 아니면 무시한다. "내가 뭔가 부족해", "아, 나는 원래 이런 건가보네" 이러면서 자책하거나, "아 뭐 어때, 계속 하면 되지" 하면서 무시하는 것이다. 둘 다 틀렸다. 둘 다 문제 해결에 도움이 안 된다.
정확하게 문제를 진단해야 한다. 개발자 커뮤니티에서 많이 추천하는 방법이 있다. 바로 9분 동안 자유롭게 일기를 써보는 것이다. 스트레스 해소만이 아니라 진정한 의미의 자기 분석이다. 이렇게 써보자.
"오늘 코딩테스트 준비하면서 뭐가 제일 힘들었어? 어떤 감정이 들었어? 왜 그런 감정이 들었다고 생각해? 어떤 순간부터 집중력이 떨어졌어?"
이걸 쓰다 보면 패턴이 보인다. 어떤 사람은 "같은 유형 문제는 풀 수 있는데, 새로운 조합 문제가 나오면 못 풀어서 답답하다"고 쓴다. 또 다른 사람은 "처음에는 문제를 읽기만 해도 답이 떠올랐는데, 요즘엔 1시간을 봐도 아이디어가 안 나온다"고 쓸 수도 있다. 누군가는 "그냥 계속 공부하기 싫어졌어. 코딩이 재미없어"라고 쓸 수도 있다. 이게 진짜 문제다.
첫 번째 경우라면, 너는 기본 알고리즘은 이미 충분히 안다. 문제는 이 알고리즘들을 어떻게 조합하느냐다. 그럼 조합 문제에 더 집중해야 한다. 두 번째 경우라면, 너는 단순히 문제를 많이 풀지 않은 것이다. 다양한 문제 패턴을 더 접해야 한다. 세 번째 경우라면 동기 부여와 흥미 회복이 중요하다. 원인이 다르면 해결책도 다르다. 자신의 진짜 문제가 뭔지 알아야 그 다음 단계로 나아갈 수 있다.
실전 극복법 1: 공부 방식 자체를 바꾸기
많은 코딩테스트 준비생들이 하는 실수가 있다. 문제를 풀고, 답안을 본다. 이게 끝이다. 다음 문제로 넘어간다. 이런 식으로 공부하면 1년을 해도 실력이 크게 느는 느낌이 안 든다. 문제를 많이 푼 것 같은데 배운 게 뭔지 모르는 상태가 된다.
이론부터 확실히 다지고, 그 다음에 문제를 풀어야 한다. 예를 들어보자. DFS/BFS를 공부한다고 하자. 그럼 이렇게 진행해야 한다.
1단계: 개념 학습
스택과 큐의 작동 원리를 정확히 이해하자. 왜 DFS는 스택을 써야 하고, BFS는 큐를 쓸까? 시간 복잡도는 왜 O(V+E)일까? 공간 복잡도는? 이런 걸 이해하고 넘어가야 한다. 단순히 "그렇게 하는 거야"라고 외우지 말자. 유튜브 강의나 블로그에서 이미지 자료를 보면서 이해해보자. 직접 손으로 그려보면서 동작 원리를 따라가보자. 그리고 중요한 건, 한 번 이해하고 끝내지 말고, 그걸 자신의 말로 정리해보는 것이다. 친구한테 설명하듯이 글로 정리해보자.
2단계: 접근법 정리
문제를 읽고 바로 코딩하지 말자. 5분을 더 투자해서 문장으로 접근법을 정리해보자. "이 문제는 그래프에서 시작점부터 모든 노드를 방문해야 하니까 DFS를 써야 할 것 같다. 시간 복잡도는 O(V+E)가 될 거고, 공간은 스택 크기만큼 필요하겠다. 재귀로 구현하면 호출 스택을 쓰니까"는 식으로 구체적으로. 이렇게 하면 문제 풀이 중에 길을 잃지 않는다.
3단계: 코드 작성 전 테스트 케이스 만들기
나만의 테스트 케이스를 만들자. 문제에서 주어진 예제뿐만 아니라, 경계값, 특수한 상황을 직접 만들어서 손으로 한 번 시뮬레이션해보자. "만약 노드가 1개면? 간선이 없으면? 간선이 자기 자신으로 돌아오는 셀프 루프면? 그래프가 연결되지 않으면?" 이런 예외 상황들을 다 생각해보자. 이렇게 하면 코드를 쓰면서 실수할 확률이 줄어든다.
4단계: 코드 작성 후 다른 풀이 비교
풀고 나서 다른 사람 코드를 본다. 구현 방식이 다를 수 있다. 재귀를 쓴 사람도 있고, 반복문을 쓴 사람도 있다. 뭐가 더 효율적일까? 가독성은 어떨까? 예외 처리는 어떻게 했을까? 이런 걸 비교하면서 배운다. 자신과 다른 접근 방식을 공부하면 사고의 폭이 넓어진다.
이렇게 하면 시간은 더 걸린다. 문제 하나에 2배, 심하면 3배 더 걸릴 수 있다. 하지만 알고리즘 하나를 완전히 이해하게 된다. 결국 이게 더 빠르다. 왜냐하면 그 알고리즘이 나중에 다시 나올 때 처음부터 공부할 필요가 없기 때문이다. 진짜 이해했으면 응용도 쉬워진다.
실전 극복법 2: 작은 목표로 쪼개서 성취감 채우기
슬럼프의 원인 중 하나가 "나는 진전이 없다"는 착각이다. 이걸 극복하는 가장 단순한 방법은 작은 것부터 완성해보기다. 심리학에서 말하는 "작은 성공의 법칙"이다.
일주일 목표를 "알고리즘 100문제 풀기"로 잡지 말자. 너무 크다. 대신 이렇게 쪼개자.
- 월요일: 정렬 알고리즘 개념 정리 + 대표 문제 3개 풀이
- 화요일: 정렬 활용 문제 5개 + 오답 분석
- 수요일: DFS 개념 정리 + 대표 문제 3개 풀이
- 목요일: DFS 활용 문제 5개 + 블로그에 정리
- 금요일: 주간 복습 및 회고
- 토일: 여유 또는 약한 복습
이렇게 하면 매일 뭔가 완성된다. 완성됐다는 건 성취감이다. 성취감이 동기다. 시간이 지나면 그 작은 성취감들이 쌓여서 "어라, 나 이런 것도 할 수 있네?", "어느새 많이 풀었네?" 이런 깨달음이 생긴다. 이게 슬럼프를 벗어나는 순간이다. 심리적으로도 자신감이 생긴다.
도구를 활용해보자. Notion, Trello, 혹은 단순한 엑셀 스프레드시트라도 좋다. 자신의 진행 상황을 시각적으로 보면 더 효과적이다. "할 일", "진행 중", "완료" 이렇게 세 가지로 나누고, 매일 체크해보자. 특히 완료 항목이 늘어가는 걸 보면서 "아, 내가 뭔가 계속 하고 있구나"를 느껴보자. 이것도 중요한 동기 부여다.
실전 극복법 3: 생활 루틴 자체를 바꿔보기
이건 심리학적이면서도 매우 실용적인 팁이다. 같은 환경에서 같은 일을 계속하면 뇌가 적응하고, 결국 도파민 분비가 줄어든다. 쉽게 말해서 흥미가 떨어진다는 뜻이다. 이걸 극복하려면 자극이 필요하다.
환경을 바꿔보자. 집에만 있지 말고 카페에 가보자. 도서관도 가보자. 공원의 벤치에 앉아서 풀어보자. 심지어 맥주를 마시는 펍에서 작업한 개발자도 있다. 이렇게 환경이 바뀌면 뇌에도 자극이 간다. 신기하게도, 카페에서 1시간 공부하는 게 집에서 3시간 공부하는 것보다 효과적일 수 있다. 새로운 환경이 주는 자극력이 집중도를 올려주기 때문이다. 뇌가 "오, 뭔가 새로운데?" 이렇게 반응한다.
공부 시간을 바꿔보자. 항상 저녁에 공부했다면 아침으로. 또는 새벽으로. 30분 일찍 시작해보자. 변화만으로도 뭔가 새로운 느낌이 든다. 시간대를 바꾸면 컨디션도 다르고, 기분도 다르다. 피크 타임이 다를 수도 있다. 어떤 사람은 새벽에 더 잘 풀 수도 있다.
도구를 업그레이드해보자. VS Code 테마를 바꿔보자. 새로운 플러그인을 설치해보자. 새로운 에디터 폰트를 써보자. 이건 작은 변화지만 강력한 자극이다. "오, 이 환경 나랑 잘 맞네" 하면서 다시 흥미가 생긴다. 시각적인 변화가 심리에 미치는 영향은 생각보다 크다.
공부 전 신체 자극을 주자. 운동을 잠깐 해보자. 스트레칭, 산책, 가벼운 조깅, 줄넘기. 5~10분 정도면 충분하다. 신체가 움직이면 뇌에 산소가 공급되고, 그러면 집중도가 올라간다. 엔도르핀 분비도 늘어난다. 실제로 많은 개발자들이 이 방법으로 번아웃과 슬럼프를 극복했다. 컨디션도 좋아진다.
실전 극복법 4: 학습 기록 남기기
이건 일종의 "증명"이다. 너 자신에게 말이다. 너는 계속 성장하고 있다는 증명.
오답 정리를 체계적으로 하자. 못 푼 문제가 있을 때, 단순히 "답을 봤다" 하고 넘어가지 말자. 블로그에, 노션에, 아무데나 좋으니 기록해보자. "이 문제를 왜 못 풀었는가?", "어디서 막혔는가?", "해결 방법은 뭐였는가?", "다음번엔 어떻게 접근할 것인가?" 이렇게 4가지를 정리하자. 구체적으로 적어두자. 나중에 도움이 된다.
그럼 한 달 뒤에 그때 정리한 글을 다시 읽어보자. "오, 이걸 못 풀었었네? 지금은 풀 수 있는데?" 이 순간이 성장을 직접 체감하는 순간이다. 객관적인 증거가 남는다. 이런 체감이 나오면 다시 동기가 살아난다. "아, 내가 정말 성장하고 있구나"는 깨달음이 온다.
주간 회고를 하자. 매주 금요일이나 일요일에 지난 일주일을 돌아보자. 뭘 배웠고, 뭐가 제일 어려웠고, 뭐가 가장 재미있었고, 다음주에는 뭘 할 건지. 이렇게 기록해두면 마구잡이로 공부하는 게 아니라 체계적으로 공부하는 방향이 생긴다. 체계성이 생기면 자신감도 생긴다. 방향이 명확하면 불안감도 줄어든다.
실전 극복법 5: 완벽함을 포기하고 점진적 진전을 믿기
이건 가장 중요한데 가장 어려운 팁이다. 많은 사람이 이 팁을 알지만 실천하기는 어렵다.
코딩테스트 준비할 때 많은 사람들이 하는 말: "3개월이면 붙을 수 있어", "1주일에 30문제씩 풀면 된다더라", "이 책만 완독하면 된다더라", "이 강의만 보면 충분해"
이런 말들을 듣다 보면 사람은 완벽함을 추구한다. "모든 문제를 다 풀어야지", "모든 알고리즘을 다 알아야지", "실수 한 번 없이 풀어야지" 하는 식으로. 이건 압박을 심화시킨다.
그건 불가능하다. 진짜로. 그리고 그럴 필요도 없다.
실제 면접에서는 너무 어려운 문제도 나오고, 본 적 없는 유형도 나온다. 하지만 합격하는 사람들은 뭐를 하냐고? 모든 문제를 완벽하게 푼 게 아니다. 문제에 접근하는 방식을 알 뿐이다. 70% 정도 풀면 충분하다. 70% 풀면 그 회사의 커트라인에 들어온다. 심지어 50%만 풀어도 합격하는 경우도 있다. 그리고 면접에서 한 문제를 깊게 논의하는 게 두 문제를 얕게 푸는 것보다 훨씬 낫다. 면접관도 알고 있다. 당신이 모든 문제를 풀 거라고 기대하지 않는다.
그래서 할 수 있는 만큼 하자. 완벽함을 추구하지 말고, 점진적인 진전을 믿자. 이번달에 50문제를 풀었으면, 다음달엔 60문제를 풀자. 그 다음달엔 70문제를 풀자. 이런 식으로 천천히 올려가자. 실력도 천천히 올려가자. 이해도를 높이면서 천천히. 천천히 올라가는 그래프도 언젠가는 80% 달성에 도달한다. 그리고 그게 지속 가능한 방법이다. 번아웃 없이 끝까지 갈 수 있는 페이스다.
정말 힘들 땐 어떻게 할까?
이 모든 팁을 써도 여전히 힘들 수 있다. 정말로. 그럼 어떻게 할까? 현실적인 조언을 하자.
일단 쉬어라. 코딩테스트 준비하다가 완전 번아웃이 오면, 무리해서 푸는 것보다 쉬는 게 낫다. 하루 이틀, 일주일이라도 상관없다. 심지어 한 달 쉬는 것도 나쁘지 않다. 프로그래밍과 상관없는 걸 하자. 게임도 하고, 영화도 보고, 친구 만나고, 여행도 가고, 운동도 하자. 이 시간이 너를 재충전하는 시간이다. 쉼 없이 달리면 언제가는 넘어진다. 쉼도 중요한 전략의 일부다.
목표를 재설정하자. 원래 3개월 안에 붙을 거라고 생각했는데, 이제 6개월로 늘리자. 기간을 늘리는 것 자체가 심리적으로 얼마나 도움이 되는지 알면 놀랄 것이다. 타임프레임을 늘리는 것만으로도 심리적 압박감이 줄어든다. 한두 문제를 못 풀어도 "괜찮아, 아직 6개월 있잖아"라고 생각할 수 있다. 압박감이 줄면 집중력은 오히려 올라간다. 역설적이지만 그게 현실이다.
타인과 비교하지 말자. 온라인에서는 "2주일에 붙었어요" 이런 글만 보인다. 3개월 걸린 사람, 6개월 걸린 사람들의 이야기는 안 본다. 성공 사례만 보인다. 실패담은 잘 안 올린다. 너만의 속도가 있다. 너는 너만의 이유가 있다. 가족이 있을 수도, 풀타임으로 일하면서 준비하는 거일 수도, 그저 이 분야가 처음일 수도 있다. 다른 직군에서 전직해온 거라 기초부터 다시 배워야 할 수도 있다. 그게 다 정당한 이유다. 자신에게 집중하자.
당신은 충분히 할 수 있다
슬럼프는 죽음이 아니다. 성장의 과정이다. 정확하게 말하면 성장의 신호다.
처음엔 문제를 풀 때 신기로움만으로 했다. 다 새롭고 다 흥미로웠다. 하지만 그 단계를 지나면 자신의 한계를 마주친다. 이게 슬럼프다. 하지만 이 한계를 인식하는 것 자체가 성장의 신호다. "아, 나 이 정도 수준이구나. 그럼 여기서부터 올려가면 되겠다"는 깨달음이 생기니까. 초급에서 중급으로 넘어가는 과정에서 반드시 거쳐야 할 구간이다.
코딩테스트 준비는 마라톤이다. 스프린트가 아니다. 누가 더 빨리 80m를 달리느냐가 중요한 게 아니라, 누가 더 오래 뛰면서도 끝까지 남느냐가 중요하다. 42.195km를 완주하는 게 목표다. 슬럼프는 그 마라톤의 20km 지점이다. 힘들지만, 이걸 넘으면 언덕 저쪽이 보인다. 피니시 라인이 가까워진다.
다시 말하지만, 공부 방식을 바꾸고, 작은 목표를 세우고, 환경을 자극하고, 기록을 남기고, 완벽함을 포기해라. 이 다섯 가지를 하나씩 실행해보자. 한 번에 다 할 필요 없다. 일주일에 하나씩만 해봐도 된다. 월요일엔 공부 방식부터 바꿔보고, 화요일엔 작은 목표로 쪼개보고. 이렇게 천천히 시작해도 된다. 변화는 천천히 온다. 하지만 확실하게 온다.
그리고 정말 힘들 땐 쉬어라. 쉼도 공부의 일부다. 치열함도 중요하지만 지혜로움도 중요하다. 자신의 몸과 마음의 신호를 무시하지 말자. 너는 기계가 아니다. 휴식을 받을 자격이 있다.
너는 할 수 있다. 왜냐하면 이미 지금까지 해왔으니까. 여기까지 왔단 것 자체가 얼마나 많은 노력을 했다는 증거인가. 그 노력이 헛되지 않을 거다. 계속 나아가자.
코딩테스트 준비 가이드: 백준, 프로그래머스, LeetCode 사이트별 효율적 학습법
코딩테스트를 준비하면서 가장 먼저 마주치는 선택지가 하나 있습니다. "어디서 공부할 것인가?"라는 질문이죠. 저도 처음에는 이 질문 앞에서 한참을 고민했습니다. 백준이 좋다더니, 프로그래
byteandbit.tistory.com
'코딩테스트' 카테고리의 다른 글
| 코딩테스트 통과의 지름길, 문제풀이 후 코드 리뷰 습관 만들기 (0) | 2025.12.07 |
|---|---|
| 입사 코딩테스트 준비, 강의와 교재는 이것들로 충분하다 (0) | 2025.11.30 |
| 코딩테스트 준비 가이드: 백준, 프로그래머스, LeetCode 사이트별 효율적 학습법 (0) | 2025.11.21 |
| 코딩테스트 시간복잡도·공간복잡도 완벽 가이드: 실전 예제로 쉽게 이해하기 (0) | 2025.11.17 |
| 입사 코딩테스트 필수 알고리즘 10가지: 완벽 정복 가이드 (0) | 2025.11.16 |