코딩 인터뷰 문제만 1000가지가 넘는데, 학습 효과를 극대화하고 싶은 분들에게 아주 유용한 리소스와 공부법 공유합니다.
먼저 이 방법은 "Tech Interview Handbook"이라는 사이트를 사용합니다 (링크 첨부).
1️⃣ 1단계: 알고리즘 개념 Cheatsheet 훑어보기
https://www.techinterviewhandbook.org/algorithms/study-cheatsheet/
알고리즘과 자료 구조 개념을 처음부터 다시 복습하려면 공부량이 너무 많아질 수 있습니다. 사이트에는 친절하게 개념 정리해놓은 섹션이 있는데, 그 부분을 먼저 천천히 읽어보는 것을 추천합니다.
2️⃣ 2단계: 공부 및 준비 플래너 따라하기
https://www.techinterviewhandbook.org/coding-interview-study-plan/
위 링크를 클릭하면 무료 코딩 인터뷰 공부 플래너가 있습니다. 준비 기간을 3개월로 가정했을 때 매주 풀어야 할 문제 목록이 있습니다. 목록에 나와 있는 리트코드 문제를 천천히 풀어보는 것이 좋습니다.
첫째 주부터 넷째 주까지는 알고리즘과 자료 구조의 개념을 다시 복습하는 것인데, 1단계에서 미리 공부했으니까 스킵하고 다섯째 주 플랜부터 시작하는 것을 권유합니다.
🚨학습효과 극대화 하는 법🚨
1️⃣ 쉬운 문제 풀면서 자신감 기르기
Week 5와 Week 6 테이블에 있는 문제는 비교적 간단하고 쉽습니다. 하루 정도 날 잡아서 쉬운 문제를 여러 번 반복해서 풀어보면서 자신감을 길러봅니다. 예를 들어 쉬운 문제를 한 번 풀고 바로 중, 상 난의도의 문제를 풀면 자신감을 바로 잃을 수 있더라고요. 그 대신 쉬운 문제를 여러 번 풀면서 점차 성장하는 자신의 모습을 보며 자신감을 먼저 기르는 것이 도움됩니다.
2️⃣중, 상 난이도 문제의 공통적인 알고리즘 패턴 공부하기
중, 상 난이도 문제는 거의 다음 알고리즘 패턴에 관련된 문제입니다.
- Binary Search
- Dynamic Programming
- Tree Traversal
- Graph Traversal
- Backtracking
지난번 알려드린 유튜브 채널을 통해 위 개념을 다시 한번 공부하는 것이 좋습니다. 특히 지난번 포스팅에 알려드린 채널의 경우 알고리즘 문제 풀기 패턴을 가르쳐 주는데, 그 패턴을 수도 코드로 적어서 나만의 노트를 만듭니다.
3️⃣ 중, 상 난이도 코딩 문제 1,2 개씩 매일 풀어보기
Week 7부터 Week 12까지 나온 문제들을 솔루션을 보지 않고 혼자서 풀어봅니다. 만약 혼자서 문제 풀기가 불가능한 경우, 지난 번 알려드린 유튜브 채널에서 알려주는 문제 풀이법을 들어봅니다.
전 단계에서 알고리즘 패턴을 공부하는 것이 중요한 이유는 바로 문제를 보자마자 어떤 알고리즘 패턴을 사용해야 하는지 빨리 파악할 수 있습니다. 예를 들면 문제 A를 읽자마자 "이건 Dynamic Programming으로 풀어야겠네"라는 생각이 듭니다. 패턴만 파악하면 이미 문제 반은 풀었다고 생각해도 됩니다. 패턴을 파악해도 코드 작성을 못할 수 있습니다. 이때 미리 적어 놓은 수도 코드를 보며 어떤 방법으로 풀어야 할지 생각해봅니다.
혹시 패턴 파악이 안 되는 분들은 리트코드에 "Related Topics"를 클릭해서 어떤 패턴과 관련된 문제인지 확인해 봅니다.
4️⃣ 중, 상 난이도 코딩 문제 복습
모든 문제를 다 풀어 본 후, 전 단계에서 미리 적어 놓은 수도 코드를 한 번 더 숙지한 다음, 처음부터 끝까지 다시 한번씩 더 풀어보는 것이 도움됩니다. 다시 풀면 반드시 본인이 백퍼센트 이해하지 못한 알고리즘 토픽이 있습니다. 복습하면서 연습이 더 필요한 토픽을 파악합니다.
5️⃣ 비슷한 문제 풀어보기
전 단계에서 파악한 토픽과 관련된 문제를 풀어봅니다. 리트코드 사이트에 가면 토픽 별로 문제를 볼 수 있는데, 필터링을 통해 관련된 문제를 찾아서 풀어봅니다.
6️⃣ 모의 면접 도전해보기
문제 풀기를 다해도 막상 면접에 적합한 문제 풀기가 어려울 수 있습니다. 이때 지난번 알려드린 모의 면접 플랫폼이나 친구를 통해 면접 연습해보는 것을 추천합니다.
7️⃣ 약점을 잘 파악하고 지속적으로 성장하기
예전 포스팅에 공유한 파이널 인터뷰 준비 템플릿이 있습니다. 템플릿에 본인의 약점과 강점을 적을 수 있는 테이블이 있습니다. 모의 면접과 실제 면접을 통해 들은 피드백을 적어봅니다. 특히 본인의 약점을 테이블에 적고 반복적으로 언급되는 부분을 파악하고 고치도록 노력해봅니다. 예를 들어 "Graph Traversal에 대한 이해도가 낮은 것 같다" 및 "Time & space complexity를 파악하지 못하는 것 같다"라는 피드백이 있다면 이 개념을 다시 한번 유튜브나 책을 통해 복습하는 것이 좋습니다.
🪴 함께 읽으면 좋은 글:
[다이나믹 프로그래밍(DP)이 어려우신 분들 주목 + (알고리즘 유튜브 채널 추천 및 공부법)]
https://careerly.co.kr/comments/60463
[해외 취업 "이것" 하나로 준비하기 - 무료 템플릿]
https://careerly.co.kr/comments/59046