코드 한 줄의 기록

코딩테스트 준비 가이드: 백준, 프로그래머스, LeetCode 사이트별 효율적 학습법 본문

코딩테스트

코딩테스트 준비 가이드: 백준, 프로그래머스, LeetCode 사이트별 효율적 학습법

CodeByJin 2025. 11. 21. 08:08
반응형

코딩테스트를 준비하면서 가장 먼저 마주치는 선택지가 하나 있습니다. "어디서 공부할 것인가?"라는 질문이죠. 저도 처음에는 이 질문 앞에서 한참을 고민했습니다. 백준이 좋다더니, 프로그래머스는 기출이 풍부하다더니, LeetCode는 해외 기업을 준비할 때 필수라더니... 정보들이 너무 많았거든요.

이 글에서는 제가 실제로 각 플랫폼을 경험하면서 느꼈던 장단점과, 각각을 어떻게 활용하면 가장 효율적으로 코딩테스트를 준비할 수 있을지에 대해 함께 이야기해보겠습니다. 혹시 모르니 미리 말씀드리자면, 이건 어느 한 플랫폼이 절대적으로 좋다는 주장이 아닙니다. 오히려 각자의 상황에 맞는 최적의 조합을 찾는 방법론에 가까워요.

백준(Baekjoon Online Judge): 기초부터 심화까지, 가장 폭넓은 학습이 가능한 곳

백준은 한국의 알고리즘 학습 플랫폼 중 가장 오래되고 방대한 문제 풀을 자랑합니다. 제가 처음 백준을 접했을 때 가장 인상적이었던 부분은 문제의 '양'이었어요. 정말 어마어마합니다. 단순한 숫자만으로는 와닿지 않을 수 있으니, 직접 경험해보시는 것을 추천합니다.

백준의 가장 강력한 무기: Solved.ac와의 연동

백준을 이용할 때 빼놓을 수 없는 것이 바로 Solved.ac입니다. 처음에는 백준의 기본 난이도 표시만으로도 충분하다고 생각했는데, Solved.ac를 사용해보니 게임이 완전히 달라졌어요.

Solved.ac는 백준 사용자들의 풀이 통계와 난이도 투표를 바탕으로, 각 문제에 더욱 정확한 난이도를 부여합니다. 브론즈부터 루비까지 총 30단계의 세분화된 난이도 시스템을 사용하거든요. 이를 통해 저는 단순히 '문제를 푼다'는 느낌에서 벗어나, 'I'm at Gold level'이라는 구체적인 성취감을 얻을 수 있었습니다.

백준 문제 풀이의 권장 순서: 자신의 페이스에 맞춰 진행하기

백준으로 시작하는 분들을 위해 제가 권장하는 순서를 공유하겠습니다.

1단계: 단계별 문제 풀기 (약 50-100문제)
백준의 단계별 문제 섹션에서 브론즈 수준의 문제부터 시작하세요. 이 과정에서 여러분은 기본적인 입출력, 조건문, 반복문 같은 기초 문법을 확인할 수 있습니다. 이 단계를 건너뛰고 싶은 마음이 들겠지만, 이 기초가 정말 중요합니다. 저도 처음엔 너무 빠르게 넘어가려다가 후반부에서 역시 기초의 중요성을 깨달았거든요.

2단계: 알고리즘별 공부 및 적용
기초를 다진 후에는 본격적으로 알고리즘을 학습합니다. DFS/BFS, 정렬, 동적계획법(DP), 그래프 알고리즘 등 주요 알고리즘들을 순서대로 공부하면서, 해당 알고리즘 유형의 문제들을 풀어보세요. 중요한 건 문제를 푼다는 자체보다는, 각 알고리즘의 특성을 이해하고 왜 이 알고리즘이 필요한지를 깨닫는 거예요.

3단계: 실버랜디(Silver Random Defense)
이건 제가 가장 좋아하는 백준의 학습 방식입니다. 실버 난이도의 문제들을 무작위로 선택해서 푸는 방식인데, 알고리즘 분류를 보지 않고 스스로 어떤 유형의 문제인지 파악하고 풀어야 한다는 점이 정말 효과적이었어요. 실전 코딩테스트도 결국 각 문제가 어떤 알고리즘을 요구하는지 본인이 판단해야 하니까요.

4단계: 골드랜디(Gold Random Defense)
실버랜디에서 막힘이 없어진다면, 이제 골드 난이도로 올라갑니다. 여기서부터는 단순히 알고리즘을 알고 있는 것만으로는 부족합니다. 시간복잡도를 정확히 계산하고, 여러 알고리즘을 조합해야 하는 문제들이 많아지거든요. 이 단계에서 정체되는 건 정말 당연한 현상입니다. 저도 골드에서 한 달 이상 머물렀을 때가 있어요.

시간복잡도: 백준 문제를 풀 때 항상 염두에 둬야 할 것

백준 문제들의 시간제한은 보통 1-2초 정도입니다. 이게 뭔가 싶으실 수 있지만, 이는 여러분의 알고리즘 선택이 얼마나 중요한지를 보여줍니다. O(n²) 알고리즘으로 풀 수 있는 문제를 O(n²)으로 풀면 시간초과(TLE)가 나는 거예요. 자신이 짠 코드의 시간복잡도를 항상 의식하면서 푸는 습관이 정말 중요합니다.

프로그래머스(Programmers): 기업 채용의 '현장감' 느끼기

프로그래머스는 다릅니다. 백준이 '알고리즘 학습'에 초점을 맞췄다면, 프로그래머스는 '기업 채용'이라는 실제 맥락을 제공합니다.

프로그래머스만의 특별함: 난이도 체계

프로그래머스의 난이도는 레벨 1부터 5까지로 구성되어 있습니다. 사실 숫자로만 보면 백준과 크게 다르지 않아 보일 수 있지만, 여기엔 큰 차이가 있어요.

  • 레벨 1-2: 기본 문법과 간단한 구현. 네이버 부스트캠프 같은 부트캠프 입시 코테 수준입니다.
  • 레벨 3: 여기부터 본격적입니다. 기초적인 알고리즘 지식이 필요한 문제들이 나타나요. 대부분의 기업 상시채용이 이 정도 난이도입니다.
  • 레벨 4-5: 대기업 공채나 네이버, 카카오 같은 대형 IT 기업의 채용 코테입니다.

기출 문제를 활용한 현실감 있는 준비

프로그래머스에서 정말 소중한 자산은 '기출문제'입니다. 카카오, 삼성 SW 역량테스트, 현대오토에버, 롯데 등 실제 기업들의 채용 코딩테스트 문제들이 공개되어 있거든요.

저는 프로그래머스에서 문제를 풀 때 시간제한을 두고 풉니다. 실제 코테 환경과 비슷하게 만드는 거죠. 이렇게 하면 시간 관리 감각도 생기고, 긴장 속에서도 문제를 풀 수 있는 능력이 길러집니다. 단순히 푸는 것과 시간 제한 속에서 푸는 건 정말 다르거든요.

프로그래머스 학습 팁: 상시채용부터 공채까지의 전략

상시채용 코테는 난이도가 비교적 낮은 대신, 모든 문제를 완벽히 풀어야 합니다. 따라서 프로그래머스 레벨 1-2를 완전히 마스터한 후에 상시채용을 노려보세요. 반면 공채를 준비 중이라면, 레벨 3까지는 틀림없이 풀 수 있어야 하고, 네카라 급 기업들을 목표로 한다면 레벨 4까지도 경험해보는 것이 좋습니다.

LeetCode: 해외 기업과 글로벌 스탠다드의 경험

LeetCode를 처음 접했을 때의 느낌은 '다르다'는 것이었습니다. 인터페이스, 문제의 출제 방식, 커뮤니티 문화까지 모든 게 백준이나 프로그래머스와 달랐거든요.

LeetCode의 난이도 체계: Easy, Medium, Hard

LeetCode는 단순하면서도 명확한 난이도 분류를 사용합니다.

  • Easy: 기본적인 자료구조와 알고리즘에 대한 이해만으로 풀 수 있는 문제들입니다. 이진트리 탐색이나 해시맵 기본 사용 정도죠. 하지만 'Easy'라고 해서 그냥 쉬운 건 아니에요. 각 Easy 문제마다 조금씩의 '트릭'이 있습니다.
  • Medium: 여기서부터 본격적입니다. BFS/DFS, 힙, 재귀, 백트래킹, 동적계획법 같은 중급 알고리즘들이 등장해요. 또한 기본 알고리즘에 '트릭'이 더해져서 문제를 더 복잡하게 만듭니다. 세 개의 수를 찾는 'Three Sum' 같은 문제가 좋은 예입니다.
  • Hard: 여기서부터는 고급 자료구조와 복잡한 알고리즘이 결합됩니다. KMP 알고리즘, 최대 유동(Max Flow), 세그먼트 트리 같은 고급 개념들이 필요합니다. 심지어 일부 Hard 문제들은 논문 수준의 복잡도를 자랑합니다.

해외 기업을 목표로 한다면 반드시 거쳐야 할 곳

LeetCode는 구글, 아마존, 페이스북 등 글로벌 빅테크 기업들의 인터뷰 문제로 많이 사용됩니다. 실제로 LeetCode에 있는 문제들이 실제 기업 인터뷰에 그대로 나오거나, 아주 유사한 형태로 출제된다는 게 알려져 있어요.

프리미엄 멤버십을 구독하면, 각 기업별로 자주 나오는 면접 문제들을 볼 수 있습니다. 예를 들어 "Google has asked this question 87 times"라는 정보가 각 문제에 붙어있어서, 준비하려는 기업의 패턴을 파악할 수 있어요.

'Discuss' 섹션: 커뮤니티의 보물창고

LeetCode의 또 다른 강점은 'Discuss' 섹션입니다. 여기서 사용자들이 자신들이 경험한 실제 면접 질문과 회사별 면접 팁을 공유합니다. "Google interview with Software Engineer, asked in 2025..." 같은 형식으로요. 이런 정보들이 정말 귀중해요. 준비하려는 회사를 검색하면, 실제 사람들이 어떤 질문을 받았고 어떤 난이도였는지를 알 수 있습니다.

영어 학습도 함께한다는 건 큰 장점

LeetCode의 모든 문제와 설명이 영어로 되어 있다는 게 처음엔 부담스러울 수 있습니다. 하지만 이건 오히려 장점이에요. 글로벌 기업 인터뷰를 준비한다면 어차피 영어로 코딩 테스트를 봐야 하니까요. 문제 이해도 영어로 해야 하고, 면접관과도 영어로 소통해야 합니다. 그래서 LeetCode에서 연습하는 게 정말 효과적입니다.

플랫폼별 효과적인 활용 전략

지금까지 각 플랫폼의 특성을 살펴봤습니다. 이제 여러분의 상황에 맞게 어떻게 조합해서 활용할지를 생각해봅시다.

시나리오 1: 한국 기업 신입 채용에만 집중하는 경우

이 경우라면 백준과 프로그래머스의 조합이 최고입니다. 저라면 이렇게 진행할 거예요.

준비 초기 (1-2개월)
백준의 단계별 문제를 차근차근 풀면서 기초를 다집니다. 동시에 주요 알고리즘을 학습하고 관련 문제들을 풀어봅니다. 이 시기에는 '깊이'보다 '이해'에 초점을 맞춥니다.

중기 (2-4개월)
백준에서 Solved.ac 기준 실버 레벨 문제들을 주로 풀면서 안정적인 실력을 기릅니다. 동시에 프로그래머스 레벨 1-2 문제들을 시간 제한을 두고 풀어봅니다.

후기 (4-6개월)
이제 본격적인 준비 단계입니다. 목표로 하는 기업의 기출 문제가 있다면 우선적으로 풀어봅니다. 없다면 프로그래머스 레벨 3, 또는 백준 골드 난이도 문제들을 중심으로 풀어봅니다. 시간 제한을 두고 풀어서 실전 감각을 유지합니다.

시나리오 2: 해외 기업 인턴십이나 채용을 준비하는 경우

이 경우 반드시 LeetCode가 들어가야 합니다. 완전한 전략은 이렇습니다.

초기 단계
먼저 백준이나 프로그래머스로 기본기를 다집니다. 한국에서 기초를 확실히 한 후에 LeetCode에 도전하는 게 훨씬 수월해요.

LeetCode 본격 진입
LeetCode의 Easy 문제 50개를 시간 제한 없이 풀면서 인터페이스와 출제 방식에 익숙해집니다. 그 다음 Medium 레벨로 넘어가세요. Medium 문제 100개는 꼭 풀어보길 권합니다. 공채 신입을 준비한다면 Hard도 경험해보는 게 좋아요.

회사별 맞춤 준비
준비 중인 회사가 정해졌다면, LeetCode의 프리미엄 멤버십으로 그 회사가 자주 출제한 문제들을 찾아 우선적으로 풀어봅니다.

시나리오 3: 시간이 충분하지 않은 경우 (3개월 이내)

제한된 시간 안에 가장 효율적으로 준비해야 한다면

첫 3주: 문제 선택과 집중
목표 회사의 기출 문제를 먼저 살펴봅시다. 최근 2-3년의 기출이면 충분해요. 이 문제들을 분석해서 자주 나오는 알고리즘을 파악합니다. 그 알고리즘들에 집중해서 5-10개씩 풀어봅니다.

4-8주: 기출 문제 집중 풀이
프로그래머스나 회사별로 공개된 기출 문제들을 시간 제한을 두고 반복해서 풉니다. 시간이 부족할 때 이 방법이 정말 효과적이에요.

남은 기간: 부족한 부분 보완
풀이 중에 부족했던 부분을 집중적으로 학습합니다. 예를 들어 그래프 알고리즘이 약하다면, 그 부분의 기초 문제들을 몇 개 더 풀어봅니다.

실전 팁: 코딩테스트를 풀 때 정말 중요한 것들

플랫폼 선택만큼 중요한 게 '어떻게 풀 것인가'입니다. 제가 경험하면서 얻은 실전 팁들을 공유하겠습니다.

도저히 모르겠을 때 풀이를 봐야 할까?

처음 이 고민을 했을 때, 저는 무조건 끝까지 고민해야 한다고 생각했어요. 하지만 시간이 지나면서 생각이 바뀌었습니다. 너무 오래 고민하면 시간낭비가 될 수 있거든요.

제 현재 방식은 이렇습니다.

한 문제에 40-50분 이상 소요되면 풀이를 봅니다. 그리고 풀이를 본 후에 '아, 이렇게 생각했어야 하는구나'를 깨닫는 게 핵심이에요. 풀이를 본 직후에는 그 아이디어를 바탕으로 같은 유형의 다른 문제들을 풀어봅니다. 이렇게 하면 단순히 문제 수만 늘어나는 게 아니라, 실제로 사고력이 성장합니다.

여러 풀이 방식으로 한 문제를 여러 번 풀어보기

DFS 문제라면 재귀로 한 번, 반복문으로 한 번, 스택으로 한 번... 이렇게 여러 방식으로 풀어봅니다. 처음엔 같은 문제를 여러 번 푸는 게 비효율적이라고 생각했는데, 이게 정말 효과적이었어요. 같은 문제를 다르게 접근하다 보면, 그 알고리즘의 본질이 더 명확해집니다.

타인의 코드와 시간/공간복잡도 비교하기

문제를 풀고 나면, 다른 사람들의 정답 코드를 봅니다. 같은 알고리즘을 사용했는데도 더 효율적인 코드가 있을 수 있거든요. 시간복잡도, 메모리 사용량, 코드의 우아함 등을 비교하면서 배울 점을 찾습니다. 이게 정말 큰 도움이 돼요.

실수를 기록하기

문제를 풀 때 자주 하는 실수들을 별도로 기록해두세요. 예를 들어 "배열 크기 계산을 잘못하는 경향이 있다" 같은 패턴들이 있을 거예요. 이런 패턴을 알고 있으면 실제 코테에서 실수를 줄일 수 있습니다.

코딩테스트 준비 과정에서 자주 드는 의문들

지금까지의 경험을 바탕으로, 제가 자주 받았던 질문들에 대해 답해보겠습니다.

"공채가 더 어렵다던데, 상시채용부터 시작해도 될까?"

네, 괜찮습니다. 사실 상시채용이 난이도가 더 낮은 대신, 완벽한 정답을 요구하는 경향이 있어요. 반면 공채는 난이도가 높지만, 일부 문제만 풀어도 통과할 수 있는 경우가 많습니다. 따라서 기초 실력을 다지기에는 상시채용 문제들이 오히려 더 효과적일 수 있습니다.

"몇 개월이 적당한 준비 기간일까?"

이건 현재 실력에 따라 정말 다릅니다. 저라면 이렇게 평가해요.

  • 기초가 전혀 없다면: 6개월
  • 기본 자료구조는 안다면: 3-4개월
  • 기본 알고리즘은 안다면: 2-3개월

물론 이건 하루에 2-3시간 이상 꾸준히 공부한다는 전제 하에요.

"모든 문제를 다 풀어야 합격할까?"

아니요. 실제로 모든 문제를 다 푸는 사람은 극히 드물어요. 보통 대기업 공채의 경우 절반 이상을 맞히면 서류전형 이후의 단계로 진출할 수 있습니다. 중요한 건 절대 점수가 아니라 '상대 점수'입니다.

코딩테스트는 여정입니다. 목적지가 아니라요. 이 여정 속에서 여러분은 단순히 테스트를 통과하는 것 이상의 것을 얻게 될 거예요. 문제 해결 능력, 알고리즘적 사고력, 그리고 끈기 말이에요.

제가 제시한 플랫폼들과 전략들은 하나의 제안일 뿐입니다. 가장 중요한 건 여러분이 자신에게 맞는 방식을 찾아내는 거예요. 어떤 플랫폼을 선택하든, 꾸준히 하는 것. 그것이 정말 가장 중요한 성공 요소입니다.

여러분의 코딩테스트 준비 여정을 응원합니다. 힘들 때도 있겠지만, 분명히 그 노력은 결실을 맺을 거예요. 화이팅!

입사 코딩테스트 필수 알고리즘 10가지: 완벽 정복 가이드

코딩테스트 준비할 때 모든 알고리즘을 다 공부할 순 없다는 거 아시죠? 시간도 제한되어 있고, 효율적으로 준비해야 하니까요. 저도 처음엔 뭘 공부해야 할지 몰라서 헤맸는데, 지금은 어떤 알

byteandbit.tistory.com

반응형