1. 개발자는 왜 알고리즘을 공부해야 할까?
왜 개발자는 알고리즘을 공부해야 할까요? 요즘 대다수의 신입 개발자분들은 취업을 위해서 알고리즘 문제를 풀고 있습니다. 코딩 테스트가 채용 프로세스의 한 부분이기 때문이죠.
굉장한 실력을 갖추신 시니어 개발자분들은 입을 모아 알고리즘 공부가 중요하다고 강조하고 있습니다. 하지만, 저와 같은 개발자 지망생들에게 크게 와닿기는 힘듭니다. 왜냐하면 신입 개발자 & 개발자 지망생들이 실무에서의 알고리즘을 통한 성능 최적화, 코드 리펙토링을 경험하기는 쉽지 않으니까요.
또한, 요즘 대부분의 언어 및 프레임워크에는 개발자가 사용하기 편한 알고리즘 메소드들이 많이 구현되어 있습니다. 때문에 Linked List, Stack, Sort와 같은 기본적인 자료구조와 알고리즘은 굳이 구현을 할 필요가 없습니다.
저도 아직 많이 부족한 개발자 지망생이지만, 개인적으로 제가 생각하는 신입 개발자가 반드시 알고리즘을 공부해야 하는 이유에 대해 말해보겠습니다.
1. 문법 공부(표준 라이브러리)
알고리즘 문제를 풀기 위해선 언어의 기본적인 문법을 익힐 수밖에 없습니다. 조건문, 반복문을 구성하고 반복되는 코드를 줄이기 위해 메소드를 선언하다 보면 자연스럽게 문법 공부가 됩니다.
또한, 표준 라이브러리와 같은 자주 사용하는 라이브러리들에 더 친숙해집니다. List, Stack, Priority Queue, Sort
와 같이 기본적으로 제공되는 자료구조들의 동작 방법과 어떻게 사용되는지에 따른 속도의 차이를 느끼게 됩니다. 예를 들어 백준 사이트의 문제들 같은 경우 표준 입출력을 사용하기 때문에 BufferedReader
와 같이 좀 더 빠른 입출력을 사용하게 되죠.
2. 코드 리딩
천재가 아닌 이상 처음 접하는 알고리즘은 반드시 남의 코드를 보면서 익혀야 합니다. 알고리즘의 동작을 알더라도 이를 코드로 구현하는 것은 매우 어려운 일입니다. 따라서 다른 사람의 코드를 분석하고 이를 자신의 코드로 녹이는 과정이 필요합니다. 이 과정에서 자연스럽게 코드 읽고 분석하는 능력이 향상됩니다.
3. 구현력
머릿속으로 알고리즘이 어떻게 동작하는지 알더라도 이를 코드로 구현하지 못하면 전혀 쓸모가 없습니다. 문제를 많이 풀면 머리로 생각하던 동작이나 구조를 코드로 옮기는 능력이 향상됩니다. 말 그대로 Coding 능력이 좋아집니다.
4. 단계적으로 생각하는 능력
복잡한 알고리즘은 문제해결을 위해 여러 단계로 나눠야 합니다. 저와 같은 경우는 문제 분석, 추상화, 계획 수립, 검증, 구현과 같이 총 5단계로 나눠 문제를 해결하는 습관을 길렀습니다. 이 과정을 거치면 알고리즘 말고 다른 종류의 문제해결에 대응하는 것에도 효과가 있었습니다.