- 백준 알고리즘 문제 풀기
- 기본 수학
- 브루트포스
- 정수론 및 조합론
- 재귀
- 정렬
- 이분 탐색
- 스택
- 큐
- DFS와 BFS
- 분할 정복
- 백트래킹
- 동적 계획법
현재 60문제 중 58문제를 풀었다. 혼자 문제를 정해서 풀려고 했으면 일주일 동안 절대 이만큼까지 못 풀었을 것 같다. 구글 스프레드시트에 본인이 푼 문제를 체크하면서 풀어나가는 방식이라서 그런지 문제를 풀 때마다 하나씩 채워지는 칸을 보면서 성취감이 들어 더 열심히 문제를 풀 수 있었던 것 같다.
잘 안 풀리는 문제는 다음날 다시 보면 풀리는 경우도 있어서 어느 정도 시간을 썼는데도 안 풀리면 넘어가고 잘 풀리는 문제부터 풀려고 하였다. 웬만하면 조금 오래 걸리더라도 스스로 풀려고 했다. 하지만 오랫동안 붙잡고 있는데도 정말 안 풀리는 문제는 해당 문제의 힌트를 참고하여 푼 것도 있다. 아예 처음 접하는 유형의 문제는 그 유형의 문제가 요구하는 개념을 먼저 이해하는 것이 우선이라고 생각해서 핵심 개념을 따로 공부하기도 하였다.
아직 못 푼 나머지 문제들을 마저 풀고 어려웠던 문제들을 다시 풀어보려고 한다. 그리고 내가 스스로 푼 문제들도 다른 사람들의 풀이를 참고하면서 더 효율적인 방법은 없는지 생각해보는 시간도 필요할 것 같다.
항해99를 하기 전에도 혼자서 알고리즘을 공부했었는데 그 당시에는 '내가 알고리즘을 잘할 수 있을까?'라는 생각이 너무나도 많이 들었다. 지금은 알고리즘에만 집중하는 시간을 갖고, 많은 문제를 풀다 보니 '나도 알고리즘 문제를 계속 풀다 보면 잘 할 수 있겠는데!'라는 생각이 조금 들기 시작했다. 알고리즘 문제를 잘 푸는 사람들이 "많이 풀다보면 늘어요!"라고 말하는 이유를 이제 조금은 알 것 같다. 아직은 쉬운 문제들만 풀 수 있지만 이렇게 꾸준히 하다 보면 언젠가는 어려운 문제도 잘 풀 수 있을 거라고 생각하며 열심히 문제를 풀어야겠다. 알고리즘 주차가 끝나더라도 하루에 한 문제는 꾸준히 풀어서 감을 계속 유지해야겠다.
이번 주에는 Node.js와 Spring 주특기 Q&A 세션이 있었다. 두 언어를 다 사용해보기는 하였으나 항해99를 지원할 때부터 Spring을 하겠다고 결심을 했기 때문에 별다른 고민을 하지 않고 Spring을 주특기로 하겠다고 생각을 했다. 그런데 내가 신중하게 고민을 하지 않고 내린 결정 같아서 스스로 결정을 잘 한 건지 확신이 서지는 않는다. 그리고 내가 너무 겉핥기로만 알고 있다는 생각이 들어서 잘할 수 있을까라는 걱정이 들기도 한다. 그래도 내 선택이 최선의 선택이라고 생각을 하며 다음 주도 열심히 보내야겠다.
다음 주에는 이번 주에 푼 문제를 나중에도 자신 있게 풀 수 있도록 복습 위주의 시간을 가져야겠다.