알고리즘을 배우는 이유와 효과

320x100

알고리즘 지식이 왜 필요한가?

바로 논리적인 사고력을 기르기 위해서입니다.

 

누군가는 알고리즘을 실무에 가서 전혀 도움이 되지 않는 지식이라고 말하기도 합니다.

사실 그 말들이 아예 틀린건 아닐 수 있어요. 알고리즘에서 배우는 여러 기법들이 실제 실무에 가서 쓰이는건 절대 보편적이지는 않긴 해요. 들어간 회사의 주요 서비스에 따라, 들어간 회사가 소위 말해 얼마나 좋은 회사이냐에 따라 알고리즘 기법을 몇년간 아예 쓰지 않을 수 있긴 해요.

 

그럼에도 불구하고 많은 기업에서 알고리즘을 중요하게 생각하는 이유가 바로 앞서 말씀드렸던 논리적인 사고력이에요.

알고리즘은 배우다 보면 천재이거나 이미 아는 문제가 아닌 이상 문제를 해결하는 방법에 가장 큰 시간을 투자해야 해요.

해결하는 방법을 명확하게 설정하지 못하고 대충 떠오르는대로 코딩을 하다보면, 나중에 가서 내가 짠 코드가 효율성이 많이 떨어지는 코드이거나, 특정 상황에 대해서는 그 문제를 해결할 수 없는 경우가 존재하거든요. 그렇기 때문에 처음부터 제대로 된 논리를 갖추고 코드를 짜는게 중요합니다.

 

알고리즘 기법 자체는 실무에서 쓰이지 않을 수 있으나, 알고리즘 문제를 풀듯이 어떤 문제를 직면했을 때 위험이 발생할 만한 케이스들을 고려하고, 효율성 좋은 코드를 구성하는 것은 매우 중요합니다. 제품의 성능과 오류 발생률은 매출에 큰 영향을 끼치기 때문에 이러한 논리적인 사고방식을 많은 회사에서 중요하게 여기는 것이고, 특히 경력 코딩 테스트는 난이도가 그렇게 높지 않은것에 비해 신입이 코딩 테스트를 어렵게 보는 이유 또한 아직까지 경험이 없기에 무언가 입증할 수 있는 바가 전혀 없고, 얼마나 논리적으로 코드를 짤 수 있는 사람인가를 볼 수밖에 없고, 개발자란 직업을 갖기 위한 사람이 많아지는만큼 그 수준 또한 매년 올라가고 있기에 난이도가 계속 올라가고 있습니다.

 

어떻게 알고리즘을 배울 것인가?

알고리즘 또한 프로그래밍 언어를 배웠을 때처럼 차례차례 배워가야 합니다.

 

그 전에, 현재 자신이 어느정도까지 구현할 수 있는가도 알아야 해요. 가령 이런 문제가 있다고 생각해 봅시다.

 

"자신이 가장 잘 하는 프로그래밍 언어로 구구단 2단부터 9단까지를 짜보세요"

 

이 문제를 듣고 어떤 생각이 드셨나요?

뭐 이런 쉬운 문제를 냈냐는 분도 있을 거고, "어...음..." 하시는 분들도 있을거에요.

 

저는 주로 프로그래머스라는 페이지에서 코딩 테스트 문제들을 풀었었는데

본인이 방금 구구단 문제에 대해 "어...음..."하시는 분이라면 레벨 0단계,

"짤 수 있지~" 라는 분은 레벨 1단계,

"뭐 이런 당연한 걸 물어봐~" 하는 분들도 1단계~2단계 문제를 풀어보시면 될거예요.

 

그렇게 자신의 레벨에 맞는 문제를 푸시고, 잘 풀었다면 다음 단계로 가면 되겠지만,

분명히 어떤 단계의 문제에서 막히실 겁니다.

 

0단계에서 막혔다면, 아직 알고리즘을 입문하실 단계는 아니라 생각하며, 프로그래밍 언어 자체를 다시 한 번 숙지해주시는게 더 도움이 될 거라고 생각하고

1단계에서 막히셨다면, 해당 문제에 대한 답들을 해당 페이지에서 확인하실 수 있을 거예요. 답을 보고 "이렇게 푸는거구나~" 하시면 될거고,

2단계 이상에서 막히셨고, "답을 봐도 뭔소리인지 모르고 무슨 자료구조를 써서 풀어야 하고, 무슨 알고리즘 기법을 써서 풀어야 한다는데, 그게 뭔데?" 라는 생각이 드신다면 그때 제대로 알고리즘을 공부하실 때가 된거예요. 

알고리즘을 학습하는 방법은 다양하죠. 강의를 하나 구매하셔서 알고리즘의 기본기를 탄탄히 다지시는 방법도 좋고, 잘 모르는 문제에서 쓰인 자료구조나 알고리즘을 볼 때마다 그게 뭔지 학습하는 방법도 있습니다.

사람마다 학습 방법이 매우 다르지만, 제 생각은 유료 강의 하나에 투자해서 자료구조와 알고리즘에 대해 기초를 다지시기를 추천드립니다. 왜냐면, 궁금한게 생길 때마다 단편적으로 여러 정보들을 수집한 다음 취합하실 수도 있겠으나, 저는 이 방법이 일반적인 방법은 아니며 공부머리, 코딩머리가 꽤 있으신 분들이 하실만한 학습 방법이라고 생각해요. 저는 그러지 못했고, 정규 강의를 통해 A-Z까지 배운 다음 그 중에서도 가장 중요했던 A, B, C를 다시 집중해서 학습하는 방향성이 저와 맞기에 이러한 학습 방법을 택하지만, 이 역시 본인이 자신있다면 따르지 않으셔도 됩니다.

 

알고리즘 학습 로드맵

(개인적인 생각입니다)

1. 프로그래머스 기준 레벨1단계 문제를 어렵지 않게 풀 수 있도록 만든다.

2. 강의를 구매한다.

3. 강의 학습과 알고리즘 문제 풀이를 병행한다.

4. 알고리즘 강의를 완강한 뒤 배운 내용을 기반으로 모르는 문제들은 답을 보고 부족한 개념을 다시 다잡으며 레벨3단계까지 풀 수 있도록 한다.

5. 원하는 기업들의 코딩 테스트 기출 문제들을 푼다.

 

정리

알고리즘은 어렵지만, 소위 말하는 괜찮은 회사에 들어가기 위해 필수입니다.

 

자신이 학력이 모자라고, 수상 경력이 없고 하시는 분들에게 알고리즘 테스트는 오히려 기회에요.

학력과 스펙의 벽을 뚫을 수 있다고 생각하시고 공부하시면 좀 더 동기부여가 될 것 같습니다.

 

화이팅!

 

관련 포스팅 (각 항목마다 링크가 걸려 있습니다)

320x100