본문 바로가기
공부

알고리즘 문제 분석 습관 개선기: 나의 시행착오

by 꾸돼지 2025. 6. 3.
320x100

이직을 위해 필수적인 코딩테스트 준비...

나는 사고속도와 손이 느린 편이어서... 이런 빠르게 해결해야 하는 문제에 상당히 약한 편이다.

특히 문제를 풀 때, 초기에 조건을 하나 놓치는 경우 치명적이다.

 

내가 알고리즘 공부를 위해 선택한 책에서는 문제 분석에 10-15분 투입하는 것을 아까워하지 말라고 가장 처음부터 조언한다.

문제를 잘 읽고, 초기에 구상한 해결방안의 시간/공간 복잡도를 계산해서 이렇게 코드를 진행할 것인지 결정한다.

 

정말 맞는 말인데, 지키기가 가장 어렵다.

나는 이런 얘기할 일이 없을 줄 알았는데, 문제를 잘 읽는 것이 무엇보다도 어렵다.

나이를 먹을수록 자기 얘기만 하는 경향이 생긴다고 하는데, 내가 벌써 그렇게 되는 건가 걱정이 마구마구 샘솟는다.

 

 

나의 가장 큰 문제점

 

문제가 길게 얘기하는 걸 읽고 싶지가 않다.

문제를 읽다 보면 해결 방안을 생각하게 되는데, 이 초기 구상이 떠오르면 후에 읽는 조건들을 간과하게 된다.

 

남들에 비해 실력도 없는데, 조급한 습관까지 생겨나서 해결능력을 더 저해하고 있다.

 


내가 본가에 가서 부모님을 보면 하루에 한 번씩은 꼭 하는 말이 있다.

내 학창 시절에 공부해라라는 말을 들었던 것의 복수처럼, 책 좀 읽으세요 라는 말을 정말 많이 한다.

 

은퇴하기 전에는 책을 한 달에 한 권 이상씩 보셨던 것 같은데...

맨날 TV와 유튜브만 보고 있고, 어떤 책을 읽는다는 이야기를 들어본 적이 없다. 

 

며칠 전 들었던 말을 오늘 또 듣고, 며칠 뒤에 또 같은 내용의 말을 듣고 나면 부모님이 치매가 오려는 게 아닌가 하는 걱정이 든다.

그러면 머리를 쓰게 해야겠다는 위기감과 함께 나도 했던 이야기를 또 하게 된다.

 

책 좀 읽으세요.

 


근데 웃긴 건 내가 똑같은 문제를 알고리즘 문제를 풀면서 느낀다는 것이다.

 

아 저번에 풀었던 문제랑 같네? 그럼 이렇게 푸는 문제인가 보다.

이 생각이 드는 순간 현재 읽고 있는 지문과 테스트 케이스에 대한 검토를 까맣게 잊는다.

그리고 예전 비슷한 유형의 문제대로 풀이부터 시작하고, 당연히 틀린 이후에 시간을 까먹게 된다.

 

한참 못 풀다가 문제를 처음부터 다시 읽거나, 다른 사람의 풀이를 보고 나면 깨닫게 된다.

아 또 문제를 제대로 안 읽어서 조건을 놓쳤네......

 


마음이 급해서 그런가?

정말 잘 안 고쳐지는 습관이다.

회사에서 근무하고, 퇴근해서 한두 문제씩 풀 때는 이런 부분에선 거의 틀리지 않았다.

그땐, 지금보다 더 하찮은 상태였는데, 특히 복잡하지만 단순한 구현 문제에서는 거의 안 틀렸다.

 

지금은 각종 유형의 문제에 대해 가장 핵심적인 해결 방법은 잘 찾게 되었다.

BFS, DFS, 수학, DP, 정렬, 탐색, 재귀...

그런데 자꾸 손이 먼저 키보드로 향한다.

 

컴퓨터에게 일을 시키기 전에 어떤 일을 어떻게 시키겠다는 지시서를 손으로 쓰는 과정이 잘 안 된다.

나도 책을 안 읽어서 그런가?

요즘 머리를 덜 써서 그런가?

마음이 급해져서 그런가?

나이 먹고 남의 얘기 듣기가 싫어져서 그런가?

 

키보드 없이 문제를 읽고 해결방안만 쓰는 방식으로 한동안 트레이닝을 해야 할 것 같다...

 


2025.06.27 후기

최근에 그래도 논리적으로 글을 쓰려고 노력하고, 문제도 하루 한 문제정도씩은 풀려고 노력했다.

그래서 어느정도 개선된 것이 느껴진다.

문제를 풀기 전에 생각하는 시간이 늘어났고, 무엇보다 유형 파악을 많이 할 수 있게 되었다.

 

아직도 코테를 보면 죽 쑤는 것은 똑같긴 한데...

이 글을 처음 쓴 시점에 비해서는 많이 늘었다.

 

혹시 나와 같은 문제가 있는 분들이 이 글을 보게 된다면, 조급한 마음을 내려놓고 기본부터 연습하시길 바란다.

조금 공부해보니, 유형을 모르면 결국 못 푸는 문제들이 많다.

그리고 침착하게 생각하면 10-15분 정도면 답을 추론할 수 있는 문제들 위주로 시험에 나온다.

 

내가 이번달 중순에 N사의 코딩 테스트를 봤었는데...

결국 안되긴 했지만, 문제를 이해하는 능력은 확실히 올라갔다.

일부 문제는 많은 유형을 경험해 봐야 해결이 가능한 문제들도 분명 있다.

예를 들어 지금이야 다익스트라 같은 알고리즘이 기본으로 익혀야 하는 알고리즘이지만... 이런 건 유형을 모르면 못 푼다.

 

이 알고리즘을 고안하신 분은... 에츠허르 다익스트라, 네덜란드의 컴퓨터 과학자로 1972년 튜링상을 수상했다.

 

자신감을 갖자!

나는 중간중간 자주 알고리즘을 포기했는데...

포기하지 않으면 결국 시험 허들은 누구나 통과하는 날이 온다.

대부분 3-6개월 정도라고 하는데, 뭐 어떤가? 1년 공부해서 통과해도 통과하는 거다.

320x100

'공부' 카테고리의 다른 글

[BE] RabbitMQ 장애 - 메시지 유실  (1) 2025.06.05
[BE] Publish & Subscribe 구조  (0) 2025.06.04
[FE] Lazy Loading & Code Splitting & Tree Shaking  (0) 2025.06.03
[웹] Server Sent Event  (0) 2025.06.02
[GCP] Gitea + Nginx(SSL)  (0) 2025.05.20