개발자에게는 효율적인 코드 작성이 필요하다. 이를 위해서는 다양한 알고리즘 공부를 통해 문제 해결 능력을 향상시킬 필요가 있다.
즉, 문제 해결 능력이 향상되면 효율적인 코드 작성을 할 수 있게 된다는 것이다.
효율적인 코드 작성은 나 자신의 역량을 향상시킬 뿐 아니라 회사에게도 금전적 이익을 가져다 줄 수도 있기에 능력을 향상 시킬수록 이득이다.
또한, 여러 기업들의 채용 프로세스에 코딩테스트 항목으로 알고리즘 관련 시험도 있다.
백준, 프로그래머스 등 알고리즘 관련 문제 풀이 사이트가 여러 곳 존재하고 다양한 범위, 난이도의 문제를 제공한다. (나는 백준에서 주로 문제를 풀어본다.)
알고리즘 문제에는 BFS, DFS, 그리디, 동적 프로그래밍, 점화법 등 여러 정형화된 풀이 기법들이 존재한다.
이러한 기법들을 활용하면 간단하게 문제를 풀 수도 있으며, 수행 시간을 획기적으로 줄일 수도 있다.
해당 기법들에 대해서는 알고리즘 2부, 3부, ... 에서 하나씩 정리하며 알아가 볼 것이다.
내가 알고리즘을 공부하며 자주 참고하고 있는 유튜브 채널은 동빈나님의 '이것이 취업을 위한 코딩 테스트다'를 추천한다.
이외에도 여러 블로그 글들을 읽으며 같은 문제를 풀었더라도 다양한 풀이법을 접해보는 것은 스펙트럼을 넓히는데 좋은 양분이 된다. (정말 다양한 풀이법이 존재한다.)
알고리즘 언어 선택에 대해 고민하는 분들도 많고 나도 고민을 해봤지만 무슨 언어든 간에 자기에게 잘 맞는 언어를 선택하면 된다고 생각한다. (각 언어마다 장, 단점이 존재하므로 어떤 언어가 우수하다고 얘기할 수는 없다고 생각하기에..)
현재 나는 알고리즘 스터디에 참가하고 있다.
해당 스터디의 목적은 꾸준하게 알고리즘 문제를 풀어보자는 취지로 만들어졌고 덕분에 꾸준하게 알고리즘 문제를 풀어나가고 있다.
스터디에서 정해놓은 목표치만 딱 채우지말고 더 많은 문제를 풀고자하는 마음으로 하나 둘씩 더 풀어보고 있다.
그리고 하다보면 뭔가 재미있어서 더 풀게된다고나 할까...?
백준에 보면 푼 문제 횟수, 난이도 등을 통해 등급을 나누고 있는 것 같은데 이것도 올리는 재미가 쏠쏠하다.
현재는 실버지만... 꾸준히 풀어서 얼른 골드, 플래 마지막 루비까지 정복하는게 목표다.
꾸준함으로 문제를 혼쭐내 보자