규도자 개발 블로그

알고리즘 문제들을 풀면서 느꼈던 단상 본문

잡설

알고리즘 문제들을 풀면서 느꼈던 단상

규도자 (gyudoza) 2019. 4. 9. 22:59

알고리즘 문제들을 푸는 걸 좋아했는데 점점 나만의 재량으로 풀 수 없는 문제들이 나올 때, 예를 들어 다이나믹 프로그래밍이나 그래프이론, 탐색 등의 요소가 가미됐을 때 들었던 생각들이다. 그러니까... 기분이 이상했다고 해야하나. 창의력 문제였던 줄만 알았던 알고리즘 문제조차 사실은 수학문제들 처럼 공식을 알아서 대입해야만 풀 수 있는 것들이었고 결국엔 공식의 적절한 활용과 응용으로 풀어내는 것들이었다는 걸 깨닫고 나니 결국 알고리즘도 수학이랑 다를 게 없구나 하는 생각이 들었다.

 사실 이런 생각들이 물밀듯이 들어왔던 계기가 있는데 얼마 전에 에라토스테네스의 체를 응용해야하만 하는 문제를 만났을 때였다. 에라토스테네스의 체가 뭔지도 몰랐던 나는 어리둥절했고 위키피디아에 검색해봐서 아 이게 에라토스테네스의 체구나 하는 깨달음은 있었지만 에라토스테네스의 체에서 소수를 구하는 방식을 직접 생각하지 못했던 내가 굉장히 원망스러웠다. 어렴풋한 생각까지는 미쳤지만 결국 이 방식에 도달하지 못했으니 말이다. 그리고 개념은 알았으니 직접 코드로 구현해보려 했는데 그것 또한 생각보다 쉽지 않았다. 이러한 과정들에 더해 위에서 말했던 다이나믹 프로그래밍, 그래프 이론, 이진 탐색 등등 문제를 해결하기 위한 많은 알고리즘 응용방법들을 접하면서 뭔가 약간 기가 빠졌다. 나한테 실망도 컸다. 근데 또 이런 기분에 빠져있다가도 난 천재가 아닌데 꼭 이 방법을 스스로 생각해내고 해결해냈어야 했나 하는 생각도 문득 떠오른다. 그냥 열심히 공부해서 해당 방법이 필요한 문제, 혹은 상황을 만났을 때 적절하게 머릿속에서 꺼내어 쓸 수 있으면 되는 거 아닌가 하는 생각이 들었다. 그렇게 결국 이런 기분들에서 해방되었지만 그래도 완전히 벗어난 건 아니라 요즘 조금 멜랑꼴리하다.


옛날에 썼던 것 처럼 알고리즘 문제나 실제 프로그래밍 모두 아주 딱딱한 학문과 창의력을 사용해야하는 작업 그 사이의 어디쯤에 있는 것 같다. 이러한 특성 때문일까 가끔은 다른 사람의 기발한 해결방법을 탐독하고 감탄하면서도 나는 왜 이 방법을 생각하지 못했나에 대한 원망과 자괴감이 함께 찾아오는 건 피할 수 없는 것 같다. 결국엔 더 열심히 공부해야겠다는 다짐을 하기 위한 넋두리였다.

Comments