알고리즘이란, 컴퓨터가 어떤 문제를 해결하기 위한 자세한 방법이다. 따라서 컴퓨터가 이해할 수 있는 방식으로 정리되어 있는 해결 방법으로 기술되어야 한다.
같은 문제를 해결하기 위해서도 다양한 알고리즘이 존재할 수 있다.
그렇다면 다양한 알고리즘 중에 좋은 알고리즘이란 무엇일까? 좋은 알고리즘은 두 가지 조건을 충족시켜야 한다.
- 문제를 해결하는 것
- 문제를 더 잘 해결하는 것
알고리즘 프로그래밍 언어를 이용하여 구현된다. 그래서 프로그래밍과 알고리즘은 뗄래야 뗄 수 없는 관계다.
유능한 개발자들의 대부분은 알고리즘적 사고력을 갖추고 있고, 대표적인 알고리즘 정도는 꿰고 있다.
개발자가 되면 이런 식의 대화가 오간다:
"여기서는 BFS 알고리즘이 적합하다."
"Divide and Conquer 방식으로 접근해보자."
따라서 알고리즘에 대한 지식 없이는 개발자와 원활한 소통이 어렵다.
Google, Facebook, Amazon 등 대기업들을 포함한 대부분의 회사에서는 개발자를 뽑을 때 알고리즘 테스트를 진행하는 이유다. 그중에서 대기업들은 특히 알고리즘을 거의 가장 중요한 평가 기준으로 본다.
'실무적인 경험이 부족하더라도 알고리즘적 사고력이 검증된 지원자라면, 나머지는 충분히 가르칠 수 있다'라고 판단을 하는 것이다. 반대로 알고리즘을 잘 모르는 개발자라면 좋은 대우를 받기 어렵다는 뜻이기도 하다.
'Development > Algorithms' 카테고리의 다른 글
algorithms/배열(array) (0) | 2019.12.30 |
---|---|
algorithms/자료구조 & 알고리즘에 대하여 (0) | 2019.12.30 |
알고리즘 공부법 (0) | 2019.12.26 |
[Algorithms] 해쉬 테이블(Hash Table) (0) | 2017.04.21 |
[Algorithms] 이진트리(Binary tree) (0) | 2017.04.19 |