개발자로 취업하기 위한 관문 중 하나는 코딩테스트이다.
코딩테스트 문제는 사람이 내는 것이고, 무한히 참신한 문제를 낼 수 없기 때문에 시중에 나와있는 문제들과 비슷하거나 조금씩 바꾼 문제가 출제되기 마련이다. 결국 문제은행 방식과 유사하다고 생각한다.
그럼 시중에 나와있는 문제들을 모두 푼다면 되겠지만 그건 비효율적이고 시간적으로도 모자르다.
이런 문제은행 시험을 통과하는 법 중 가장 효율적인 것은 최대한 많은 문제의 답지를 계속 보면서 외워버리는 것이라고 생각한다.
마치 문제와 답을 데이터로 하는 머신러닝을 우리 뇌로 돌리는 것 같다고 생각한다.
모든 문제의 답을 보는 것 역시 비효율적이므로 적절한 문제를 골라서 풀어보고, 답을 보고 주의할 점이 뭔지, 어떤 유형인지를 알아가면 될 것이다.
그럼 적절한 문제는 무엇일까?
기업들의 코딩테스트에 나오는 알고리즘은 그렇게 많지 않고 난이도도 백준 기준 플래티넘 5를 넘는 문제는 잘 나오지 않는다.
주요 유형 (구현, 문자열, DFS/BFS, 최단 경로 등등..) 별로 백준 난이도 실버 2 ~ 플래티넘 5 정도되는 문제가 적절한 문제라고 생각한다.
알고리즘 유형 별로, 백준 단계별로 문제를 풀어나가다 보면 어떤 점을 유의해서 문제를 풀어야 하나 좀 더 명확하게 다가온다.
예를 들어 골드 5정도의 BFS 문제는 단순히 BFS 만 구현할 수 있다면 단순하게 풀 수 있지만 골드 3의 문제는 여기에 메모이제이션을 이용해서 풀어야 한다.
그럼 새로운 문제를 만났을 때, 풀어나가는 과정에서 어떤 것이 더 필요할지 쉽게 생각할 수 있을 것이다.
코딩테스트 cheatsheet 시리즈는 알고리즘 유형 별로 간단한 설명과 백준 티어 별 문제를 분석할 예정이다.
'ps, cp > 코딩테스트 cheatsheet' 카테고리의 다른 글
[코딩테스트 cheatsheet] 서로소 집합 (Disjoint set) (0) | 2023.02.23 |
---|---|
[코딩테스트 cheatsheet] 다익스트라 (0) | 2022.12.14 |
[코딩테스트 cheatsheet] 플로이드 워셜 (0) | 2022.12.10 |