[알고리즘] 서론: 개발자가 알고리즘을 공부해야 하는 이유

2021. 12. 12. 20:42알고리즘 Algorithm

"알고리즘 공부를 하지 않아도 된다?"

사실 알고리즘을 공부하지 않더라도 당장에 코딩을 하는 데에는 문제가 없다. 다만 효율적인 코딩을 하지 못할 뿐
하지만, 코딩 경력이 점점 쌓이고 더 좋은 코드를 짜려고 시도하고 더 큰 프로젝트에 참여했을 때 알고리즘을 모른다면 작은 프로젝트와는 다르게 속도가 느려지거나 코드가 난잡해보이는 등의 문제점을 발견하게 될 것이다. 당장에 별찍기 같은 낮은 수준의 문제를 푼다면 문제가 없겠지만 나중에 더 큰 데이터를 다루게 되었을 때 알맞은 알고리즘과 자료구조를 사용하지 않으면 내가 개발한 프로그램이 오류가 없음에도 불구하고 너무 속도가 느려서 사용하는데 불편함을 느끼는 등의 벽에 부딪힐 것이다. 즉 알고리즘을 모른 채로 코딩을 하면 효율이 떨어지는 프로그램을 개발하게 된다는 것이다.

 


"그래서 알고리즘이 뭔데?"

위키피디아의 설명을 빌리자면 알고리즘이란 어떠한 문제를 풀어맺기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것으로 표현할 수 있다. 모든 것에는 알고리즘이 있다. 아침에 일어나서 반복하는 루틴도 커피를 내리거나 빵을 구울 때의 일련의 행동들도 알고리즘으로 볼 수 있다. 코딩에서의 자주 쓰이는 알고리즘으로는 정렬 알고리즘, 탐색 알고리즘, 그래프 알고리즘 등이 존재하고 이런 알고리즘을 적재적소에 사용하므로서 프로그램의 효율을 상승시킬 수 있다.

 

 


"알고리즘으로 무엇을 할 수 있나요"

알고리즘을 알면 좋은 프로그램을 만들 수 있다. 좋은 프로그램이란 무엇일까?

맥락에 따라 다르지만 효율적이고 범용성 있는 코드로 이루어져있고 따라서 일련의 처리 과정이 빠르고 정확하고 문제 해결을 위한 프로세스가 간결하며 기존의 구조가 짜임새가 있어 재활용하기 용이한 프로그램이라고 지금의 맥락에서는 설명할 수 있다. 알고리즘을 잘만 활용하면 코드의 반복 실행 횟수를 줄여주고 코드의 양도 줄여주기 때문에 알아보기 좋은 가독성 좋은 코드를 짤 수도 있다. 코드를 가독성이 좋게 짜면 협업을 할 때에는 협업자의 시너지도 상승하고 혹은 협업하지 않으면서 규모가 있는 프로젝트를 혼자 다룰 떄에도 코드를 효과적으로 관리할 수 있기에 좋은 프로그램을 만들기 한층 더 수월해진다.

 

 


"우리가 알고리즘 공부를 해야되는 가장 현실적인 이유"

컴퓨터 공학 관련학과 전공자이든 비전공이든 대부분의 개발자 지망생들이 알고리즘을 공부를 해야되는 이유!
그건 바로 취업을 하기 위해서이다. 그냥 취업이 아니라 정말 본인의 성장 가능성을 보장해주고 올바른 프로그래밍을 하는 회사에 들어가기 위해서 소위 말하는 대기업을 들어거기 위해서는 코딩 테스트를 통과해야된다는 것은 이미 모두가 알고 있는 사실일 거라 생각한다. 개발 취준생들의 꿈의 직장과 같은 네이버 카카오 쿠팡 배달의 민족 라인 등의 기업을 보면 모두 코딩 테스트를 실시하는 기업이고 개인마다 난이도는 다르게 체감되겠지만 기본적인 알고리즘을 모르는 상태에는 풀기 어려운 문제를 출제한다는 것은 모두가 인정하는 바일 것이다. 요약하자면! 정말 좋은 기업에 들어가기 위해서는 코딩 테스트를 통과해야되고 코딩 테스트를 통과하기 위해서는 알고리즘에 대해서 알아야된다가 내 결론이다.

 

 


그래도 알고리즘을 왜 공부해야되는 납득이 되지 않거나 내 글에서 설명이 부족하다고 느낀다면 아래의 영상 혹은 글들을 참고해 보기를 권한다. 어차피 언젠가는 해야되니까 매도 먼저 맞는 게 낫다고 어차피 해야할 공부 좀 더 일찍 시작하는 게 어떨까 생각한다.

https://www.youtube.com/watch?v=9TyyMtlk5i4 

https://youtu.be/4GDvvFfvvBA