생각정리/회고

[Alogorithm] 알고리즘 공부를 시작하는 올바른 방법

Joonfluence 2023. 11. 27. 13:10

본 글은 알고리즘을 이제 막 공부하기 시작한 분들에게 적합한 글입니다. 이제 막 알고리즘에 눈 뜬 입장에서, 처음 알고리즘을 접하는 분들께 드리는 조언을 담아보았습니다. 저보다 알고리즘에 대해 잘하고 자신 있으신 분들은 이 글이 큰 도움이 되진 않으실 것 같습니다. 재미로 봐주시는 건 환영입니다. 

나의 코딩테스트 실패 경험은 현재 진행형

코딩테스트, 알고리즘.. 항상 도전과 이직의 발목을 잡았던 것은 코딩 테스트였다. 처음 제대로 된 알고리즘 테스트를 본 건, 2022년 봄이었다. 프론트엔드 개발자로서 첫 취업하기 전에도 본 적은 있지만, 코딩테스트를 보는 회사에 합격한 것은 아니었으니까. 창업에 관심이 많던 나는 소프트웨어 마에스트로 과정에 지원했지만, 코딩 테스트라는 허들 앞에 좌절했다. 그 때 당시, 이것이 코딩 테스트다 with Python (일명 동빈북)을 사서 공부해보기도 하고, 프로그래머스 고득점 Kit 문제를 풀어보기도 했다. 하지만 공부하면서도 실력이 는다는 느낌이 적었는데, 결국 코테에서 7문제 중 3문제 정도 풀고 떨어졌다. 

가장 최근에 떨어졌던 쏘카 코딩테스트

또 시간이 흘러, 올해(2023년) 하반기 이직을 위해서 여러 회사의 코딩테스트에 응시했다. 아예 못푼 경우는 없었다. 총 4곳의 회사 코딩테스트를 봤는데(시간 순서대로 토스, 롯데정보통신, 티맥스, 쏘카), 아예 준비가 덜 됐던 토스를 제외하곤 적어도 절반 이상의 문제를 풀었고 티맥스 코딩테스트의 경우에는 거의 합격권에 가까웠다고 느꼈다. 하지만 번번이 떨어졌고 여전히 코딩테스트 때문에 이직에 어려움을 겪고 있다.

어떻게 알고리즘 공부를 시작하면 좋을까?

달라진 건 자신감, 약 3개월 간 100문제 정도를 풀었다

그래도 달라진 점은 이전에 비해, 알고리즘 문제를 푸는 것에 자신감이 붙었다는 것이다. 재미도 붙었다. 현재는 주로 백준에 있는 문제들을 풀고 있는데, 자연스럽게 얼마 전에는 총 100문제를 풀게 됐다. 이렇게 재미를 붙여 공부할 수 있었던 까닭은 단계별 접근 방식을 취했기 때문이다. 이전에는 난이도가 높던 낮던, 기출문제 혹은 책에서 중요하다고 생각하는 어려운 문제들을 오랜 시간 잡고 있었는데 그게 아니라, 내가 당장 풀 수 있는 문제들을 풀기 시작했기 때문이다. 그 과정에서 많은 도움을 받았던 사이트를 추천한다. 

https://code.plus/course/41

 

알고리즘 기초 1/2

알고리즘 기초

code.plus

https://code.plus/course/42

 

알고리즘 기초 2/2

알고리즘 기초

code.plus

가장 기본이 되는 자료구조(스택, 큐, 덱 등)에서부터 시작해, 코딩테스트에 빈출되는 DP와 브루트포스, 그래프 이론에 관해 단계별로 접근할 수 있게 제공된 커리큘럼이다. 참고로 강의를 수강하진 않았고 해당 사이트에서 제공하는 순서대로 문제를 풀었다. 유사한 문제들을 제공해줘, 다양한 문제들을 조금씩 다른 관점에서 풀다보니 문제를 해결하는 데, 자신감을 얻을 수 있었던 것 같다. 아직 기초 과정을 진행 중인데, 중급 1/3, 2/3, 3/3까지 완료한다면 기업 코딩테스트 통과하는 건 문제가 없을 것 같다. 실제 여러 기업의 코테(토스, 쏘카, 티맥스 등)를 보면서 느꼈던 것과 여러 블로그글과 영상들로 접한 정보들을 종합해보면, 대기업 IT 회사의 코딩 테스트를 합격하기 위해선 백준 기준 실버1~플레티넘5 수준 문제를 문제 없이 풀 수 있어야 한다. 그러려면 2가지 준비가 되어 있어야 한다고 느꼈는데, 첫번째는 유형에 대한 학습이다. 완전탐색, 이분탐색, 그리디, DP, 그래프 이론(BFS/DFS와 같은 탐색 알고리즘, 최단거리 알고리즘), 브루트포스, 구현, 시뮬레이션 등에 관해 알아야 하며, 접근 방법 또한 알아야 한다. 그러려면 두번쨰 요건인 '양'이 중요하다. 접근 방법을 알기 위해선, 같은 유형의 다양한 문제를 접해보는 것이 중요한데 해당 유형이 어디까지 변형되고 활용될 수 있는지를 알아야 하기 때문이다. 

https://code.plus/course/43

 

알고리즘 중급 1/3

알고리즘 중급

code.plus

https://code.plus/course/44

 

알고리즘 중급 2/3

알고리즘 중급

code.plus

https://code.plus/course/45

 

알고리즘 중급 3/3

알고리즘 중급

code.plus

앞으론 어떻게 공부할까?

실제 합격을 위해선 골드 문제들을 실전에서 풀 수 있어야한다. 그러려면 해당 수준의 문제를 유형별로 적어도 10문제 이상씩은 풀어봐야 할 것 같다. 그러려면 앞으로 추가로 풀 문제들은 적어도 실버 2 이상, 주로 골드 문제들을 풀 것이다. 

또 그래프 탐색 이론 유형 문제들을 많이 풀어보지 못했다. 그래서 해당 유형 문제들을 많이 풀어볼 생각이다. 

 

나의 BOJ 링크 

https://solved.ac/profile/joonfluence

 

solved.ac

알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다.

solved.ac

 

반응형