[알고리즘_0] 알고리즘 공부에 대한 생각
동기
최근 코딩을 다시 시작하면서 이전에 배웠던 알고리즘들에 대한 기억들을 조각모음하고, 그때는 공부하지 않았던 알고리즘들을 살펴보고 있다. 알고리즘을 공부하는 이유는 알고리즘 문제를 풀었을 때와 깔끔한 코드를 작성했을 때의 성취감 때문인 것 같다.
공부 방식
유튜브에는 공부법을 키워드로 한 영상들이 매우 많다. 개인적으로 공부에 지름길은 없다고 생각하기 때문에 공부법 영상을 보는 것을 좋아하지는 않지만, 자기가 잘 체화할 수 있는 방법을 찾는 것은 필요하다고 생각한다.
직관과 메뉴얼
나는 문제해결에 대해서는 “직관”과 “메뉴얼” 이라는 키워드를 자주 사용한다. 문제를 보고 풀이과정을 주석으로 작성하고 코딩을 시작하면 직관에 가까운 해결이고, 문제를 보고 관련 알고리즘을 먼저 떠올린 후, 어떤 것을 적용시킬까 고민하면 메뉴얼에 가까운 해결이다.
개인적으로 문제를 접하면 우선 직관으로 도전해야 한다고 생각한다. 최소 20분 정도는 외부정보 없이 생각해보고 다양한 루트를 생각해야한다. 이 과정에서 내 머릿속에 이전에는 가보지 못했던 루트들이 조금씩 정리되고, 어떤 루트는 가면 안되는지에 대한 감(일종의 pruning 능력)도 생긴다.
당연하게도 직관만으로 모든 것을 해결할 수는 없기 때문에, 공부를 해서 자신의 메뉴얼을 업데이트 해야한다. 블로그나 책을 통해 알고리즘을 공부하고, 업데이트된 메뉴얼과 직감으로 다시 문제를 도전하는 것이 바람직하다고 생각한다.
앞으로의 계획
우선 직관으로 문제를 푸는 것은 틈틈히 할 예정이다. 알고리즘 공부는 시간을 내서 공부하고, 관련 문제를 어느정도 풀어보면서 블로그에 정리할 것 같다.