카테고리 없음

알고리즘 문제 풀이 고찰

바코94 2022. 10. 9. 16:24

보통 알고리즘 문제라고 하면 코딩테스트를 위한 것으로 생각하는 경향이 있다. 나도 그랬었다.

아마 문제로 나오는 알고리즘의 유형이 실제로 사용할 일이 적기 때문이라고 생각이 된다. 필자의 경우에는 서비스 개발(프론트엔드, 백앤드) 업무를 하면서 트리나 그래프 자료구조를 직접적으로 구현할 일이 입사한 이후로 사용할 일은 없었다. 전에 공부했었던 디테일은 까먹어서 기본적인 개념만 생각이 난다.

학부 때 알고리즘 수업을 성적을 1~2등 할 정도로 정말 열심히 들었었다. 알고리즘 구현체를 달달 외워서 직접 쓸 정도로 열심히 했던 거 같다. 나는 배우고 공부하는 것에 있어서 바로 사용할 수 있는 지식과 경험을 좋아한다. 하지만 이후 시험을 봤던 코딩테스트(카카오, 라인 등) 에서는 업무에 이게 쓰이나 싶은 것들이 문제로 나와서 코딩테스트는 이직할 때만 필요한 것으로 인식이 박혀 있었다. 
이러한 이유로 `알고리즘 문제 풀이 = 코딩테스트를 위한 것` 이라는 생각이 강하게 박혀있었고, 풀어야할 동기와 흥미가 있지는 않았다.  

하지만 최근에 알고리즘 문제를 풀면서 든 생각은 자주 사용되는 자료 구조에 대한 문제 풀이는 아주 유용하다는 생각이 들었다. 예를 들면 프론트에서는 string, array, object(javascript), stack, queue 와 같은 자료구조를 자주 사용하게 된다. 따라서, 이와 관련된 문제들을 접하고 풀어보면서 다양한 인사이트를 얻을 수 있었다. 특히 leetcode와 같은 플랫폼에서는 다른 사람의 풀이도 다양하게 볼 수 있는데, 정말 생각지도 못한 풀이를 보게 된다.  

특히, string 관련된 문제를 풀다보면 정규식을 활용하는 풀이들을 접하게 되는데, 생각지 못한 좋은 구현 방법들을 접할 수 있는 좋은 기회라고 생각한다. 

실무에서 자주 사용되는 자료구조를 잘 다루면 생산성이 올라갈 것이고 더 성능이 좋고 가독성이 좋은 코드를 작성할 수 있을 것으로 느꼈다. 알고리즘 문제 풀이의 단점만 생각할 것이 아니라 장점을 생각해보고 나에게 이점이 되는 방향으로 활용해야 겠다는 생각이 든다.