[회고] 백준 골드 달성 후기

holyPigeon·2024년 1월 7일
0

회고

목록 보기
5/5
post-thumbnail

Intro

백준에서 알고리즘 문제를 풀기 시작한지가 약 1년 정도 됐는데, 얼마 전에 골드 등급을 달성하게 되서 그 동안의 느낀 점 및 후기를 남겨보려고 한다.

첫 스타트

내가 알고리즘을 처음 시작했을 때의 언어는 자바였다. 당시에는 기본적인 문법을 제외하고는 언어에 대한 이해도가 굉장히 낮았던지라 주로 브론즈 3 ~ 실버 5 사이의 문제들을 풀으며 언어 자체에 익숙해지려고 했던 것 같다.

다들 그런지는 모르겠지만 나는 사실 알고리즘을 푸는 것 자체가 별로 탐탁치 않았다. 일단 학습해야 할 알고리즘의 종류가 너무 많기도 했고, 하루에 한 두 문제씩만 푸는 이상 눈에 보이는 상승도 미미하기 때문에 동기부여가 크지 않았던 것 같다.

그래도 개발자로서 취업을 준비하는 사람이라면 대학 시절부터 알고리즘을 꾸준히 공부해야 된다.. 라는 말을 많이 들었기 때문에 시간날 때마다 백준에서 문제를 풀게 되었다. 그나마도 학기 중에는 너무 바빠서 손을 못 댔고, 주로 방학에 여유로울 때 몰아서 문제를 풀었다.

걸음마를 떼는 과정

이후 약 6개월간 자바 학습과 스프링 학습을 병행하면서 나의 자바 언어에 대한 이해도는 점차 높아졌고, 이에 따라 내가 풀 수 있는 문제의 등급도 점점 높아졌다. 대략 실버 5 ~ 실버 3 사이의 문제들을 풀 수 있게 된 시기였다.

사실 이전까지는 스택이나 큐 등을 이론으로만 배우고 실제로 써본 적이 거의 없었는데, 이런 자료구조들을 본격적으로 배우고 적용하다보니 자연스레 풀 수 있는 문제의 등급도 올라간 느낌이었다.

사실 이쯤에서 1차 한계에 부딪히게 되었다. 뭔가 실버 3 ~ 실버 1 정도의 문제만 마주하면 풀이가 잘 안 되고, 풀었다 쳐도 메모리/시간 초과가 난다거나 내 코드가 정답 코드에 비해 너무 난해해서 스스로 만족이 안되는 등 문제가 많았다. 뭔가 실력이 제자리에 멈춰있다는 생각이 드는 시점이었다.

여태까지는 따로 교육자료를 참고하지 않고 그냥 나 혼자서 문제들을 순차적으로 풀어볼 생각이었는데, 이런 상황이 지속되자 조바심도 생기고 해서 인프런에서 자바 알고리즘 강의를 찾아보게 되었다.

본격적인 알고리즘은 이제 시작

당시에 좀 더 높은 등급의 문제를 풀어보고자 한 나는 번번히 실버 상위권 문제 도전에 실패하면서 도저히 모르겠다는 생각이 들 때 정답 풀이를 찾아보곤 했는데, 해설에서 DFS, BFS, DP 등 특정 알고리즘 기법에 관한 개념들이 자주 등장했다.

사실 여태까지는 그저 내 시각에서 문제를 해석하고 풀었을 뿐이지 해당 문제의 유형을 분석해서 거기에 해당하는 정형적인 풀이대로 풀 생각은 하지 못했는데, 정답 풀이를 한 사람들이 전부 특정 알고리즘의 틀에 맞춰 풀이를 하는 모습을 보고 나도 기본 개념들에 대해 먼저 학습하는 게 좋겠다고 생각했다.

일단 지금까지는 이러한 판단이 성공적이라고 본다. 개념을 먼저 학습하고 문제를 풀면서 느낀 것이 있는데, 특정 수준 이상의 문제로 올라가면 머릿속에서 즉흥적인 아이디어를 떠올려 풀 수 있는 문제가 그리 많지 않다는 사실이다. 대부분은 이미 학습을 통해 누적된 경험과 직관을 통해 알맞는 풀이를 유추하는 경우인 것 같다.

나 역시 최근에 DFS, BFS에 대해 공부하면서 비슷한 유형의 탐색 문제들을 해당하는 공식, 패턴을 통해 쉽게 풀 수 있었다. 물론 이러한 스킬적인 부분에 너무 의존하고 스스로 문제에 대해 고민해보지 않는 것은 독이 될 수 있지만, 대부분의 경우 풀이에 유용하게 작용되므로 전반적인 알고리즘 기법들을 고르게 학습해놔야겠다는 것이 현재의 내 생각이다.

마무리

결론적으로 최근 실버 3 ~ 실버 1 사이의 문제들을 원활하게 풀어내면서 누적된 점수가 쌓여 백준 골드 등급을 달성하게 되었다. 어쩌다보니 롤 티어보다 높아져버린 내 백준 티어가 어색하면서도 성장하는 모습이 어느정도 눈에 보이는 것 같아서 뿌듯한 느낌이 있다. (아직도 코테에 도전하기에는 턱없이 부족하지만 실버 때 처참한 실력에 비해서는 많이 성장한 것 같다..)

일반적으로 대기업 코딩테스트에서 출제되는 핵심 문제들은 평균적으로 골드 정도의 난이도라고 하는데, 최근에서야 골드 문제에 도전하고 있는 나이기에 이제야 드디어 코딩테스트 문턱에 설 기회가 생겼다 할 수 있다.

아직은 많이 부족하지만 꾸준히 성장해서 실제 코테 문제에 그럭저럭 도전해볼 수 있을 정도의 실력이 되면 그 때 다시 후기를 작성해보고 싶다. 알고리즘 실력은 눈에 보이지 않고 벽에 막혀있는 듯 싶지만서도 문제를 풀수록 계속 성장하는 거라고 하니.. 너무 지루해하지는 말고 올 한 해동안 꾸준하게 풀어봐야겠다. 파이팅...!

profile
언젠가 전설이 될 남자... 피존입니다.

3개의 댓글

comment-user-thumbnail
2024년 5월 11일

이제 막 시작하는 입장에서 많은 도움이 되었습니다.
좋은 내용의 글 감사합니다.

2개의 답글