본문 바로가기

기타

알고리즘 공부를 체계화 하자,,,

반응형

처음 쓰는 일기(?)인데, 일기보단 사실 반성문에 가까운 느낌이다. 종종 보면서 마음을 다잡을 수 있는 글이 되길...

 

그동안 특정 알고리즘을 공부하고, 해당 알고리즘 유형의 문제를 푸는 방식으로 공부를 해오다가, 만약 실제 테스트나 대회에서 이 문제를 보면 알고리즘을 떠올릴 수 있을까? 하는 생각이 문득 들었다. 

 

물론 지금은 어떤 알고리즘이 있는지 공부하는 단계니까 이 공부방법이 맞을 수도 있겠지만, 위의 생각을 좀 해결하고자 무작정 해오던 알고리즘 공부를 좀 더 체계화해야겠다는 필요성을 느꼈다. 실제로 문제 유형을 안 보고 풀면 훨씬 더 못 풀게 되더라,,,

 

우선 첫번째로는, 주 1회는 반드시 하나의 problem set을 문제 유형을 보지 않고 풀어보는 것이다. 

codeforce나 다른 open contest가 있는 경우에는 이걸로 대체하고, 없다면 기존에 시행된 대회(ICPC, SPC 등)를 시간을 재고 풀어볼 예정이다. 

 

알고리즘 공부또한 지금까진 생각나는 알고리즘이나 혹은 배우고 싶은 알고리즘을 임의로 선택했는데, 좀 더 단계적으로 종만북을 기준으로 알고리즘 학습 순서를 정해서 공부를 하는 것이 나을 것 같다.

(이제는 조금이라도 종만북이 이해되지 않을까 싶다....)

 

그리고 개인적으로 고치고 싶은 습관은, 문제가 좀 어렵다 싶으면 바로 알고리즘 유형을 보거나, 숏코딩을 참고하여 문제의 난이도나 코드 길이 등을 참고하게 되는 것이다. solved.ac를 통해서 정말 많은 도움을 받고 있지만, 하나의 set을 풀 땐, 난이도 기능은 꺼두고 푸는 연습을 해야겠다. 

 

확실히 알고리즘 공부는 혼자 공부하니까 조금 힘들고 외롭다...

모르는 문제가 생기면 물어볼 곳도 마땅치 않고, 다른 사람의 코드들을 경험하고 받아들일 기회가 적다. 인터넷으로 참고만 하기엔 단순히 코드를 카피하는 기분이 든다. 

그래도 그만큼 시간을 더 투자해서 충분히 대회에 나갈 수 있을만큼 실력을 올리고, 일단은 꾸준히 하는 게 첫 번째 목표다. 

반응형