알고리즘 풀이 프로세스를 진화시키는 과정을 버전별로 정리한다.
v. 1.xx는 자료구조, 알고리즘, 문제 풀이 패턴 파악, 논리적인 사고, 상상력... etc 등을 총 동원해서 풀이하던 방식인데
하루에 2시간 이상씩 문제를 풀이하고,
문제가 풀리지 않으면 다음날에 문제를 또 풀이하는 방식으로 공부했었다.
여기서 아래와 같은 문제점이 있었다.
문제 풀이 속도가 너무 느리다.
다양한 문제를 접하기 어려워진다.
코딩테스트는 정해진 시간 내에 문제를 풀이해야 하는데
풀이 속도가 개선되지 않는다.
분명 문제가 풀릴 때까지 스스로 고민하는 것은 문제 해결 능력을 상승시켜주지만,
시간이 넉넉하지 않기 때문에 더 다양한 문제를 풀기로 결심한다.
버전 2는 하루 한 두 문제를 풀이한다.
알고리즘은 오전에 3시간 이상 한다.
한 문제를 30분 이상 풀다가 모르겠으면 힌트를 보면서 점진적으로 풀어나간다.
알고리즘의 다양한 문제를 접하기에 좋고, 너무 어려운 문제를 만났을 때 집중력을 놓치지 않게 해줘서
효율적이기도 하다. 너무 쉬운 문제를 만났을 때는 빠르게 풀고 다음 문제로 넘어갈 수도 있다.
알고리즘은 결국 다양한 유형의 문제에 친숙해져야하고, 반복적으로 기재되는 코드들에 감이 익어야
실력 향상이 되는 것 같다.
그리고, 알고리즘 문제 풀이를 블로그에 기재하던 것도 부분적으로 줄여나갈 생각이다.
오늘도 원더랜드를 PriorityQueue로 구현하는 문제를 풀었는데, 새롭게 배웠다기 보다는 기존에
배웠던 내용을 응용하는 문제였어서 따로 블로그에 기재하지 않았다.
만약 새롭게 배우게 되는 자료구조나 알고리즘이 있을 때만 블로그에 기재하여 더 효율적으로 시간을 활용하려 한다.
그리고 문제를 풀면서 내가 짠 코드에 주석을 남기는게 좋을 것 같다.
그래야 지금 수시로 어느 상황까지 왔는지 파악하기 쉽고 현재 작성하고 있는 메서드가 또는 loop문 또는 변수... etc 등이 어떤 기능을 하는지 명시적으로 기재하는게 좋아보인다.
추가 계획 )
내 문제 풀이를 버전관리하겠다는 아이디어가 참 좋은 것 같다.
학습 프로세스를 개선해나가는 과정을 명시적으로 볼 수 있고,
각각의 프로세스마다 장단점을 파악할 수 있어서 각기 다른 상황에 더 유연하게 대처할 수 있는 힘도 길러질 것이라고 생각된다.
공부를 하다보면 스스로의 학습 방식의 효율성에 대해 의심할 때가 많은데,
사실 믿음이 중요한 순간도 많다. 하지만 자신이 처한 상황을 고려하면서 자신의 방법이 뭔가 이상하다는 직감이 온다면 개선해야 할 시기가 온걸 수도 있다.
앞으로도 현재 사용하고 있는 방식에 개선해야할 점이 있다면 버전을 업데이트할 예정이다.