문제: 주어진 입력에 대한 출력의 명확하고 정확한 명세
ex) 자연수 x와 y가 주어질 때, x와 y의 곱을 출력하라.
- 알고리즘을 기술하기 전에 문제를 명확히 서술할 수 있어야한다. 즉 무엇을 입력했을 때 무엇을 출력시켜야 하는지 정확하게 파악해야 한다.
이미 우리는 알게 모르게 알고리즘을 이용하며 그 이점을 누리고 있다. 그 대표적인 예로는 '유튜브 알고리즘'을 들 수 있는데 특정 영상을 여러개 보다보면 유튜브에서 이와 관련된 영상을 추천해주고, 또 특정 이슈가 뜨거울 때에는 이와 관련된 영상을 추천해준다.
2. 왜 알고리즘을 공부해야 할까?
위의 예를 이어서 살펴보자. 만약 사용자가 축구에 관심이 있어 축구 영상을 많이 본다면 확률적으로 축구 영상을 추천해주는 것이 그 사용자를 더 붙잡아두기 좋을 것 이다. 하지만 만약 엉뚱한 야구 영상을 추천해준다면 사용자를 오래 붙잡아두지 못할 것이고 극단적으로는 고객이탈이라는 결과를 초래할 수 있을 것 이다.
위의 예는 굉장히 단편적인 예시이다. 만약 어떤 사이트에 회원가입을 시도했을 때 소요시간이 10분 넘게 걸린다면? 나이키 바지를 주문했지만 아디다스 반팔티가 온다면? 이 모든 것이 잘못된 알고리즘으로 인해 초래된 결과라고 할 수 있다.
따라서 좋은 프로그램을 만들기 위해서는 알고리즘 공부는 필수이다. 빠르고 효율적이며 정확한 프로그램을 만들기 위해서는 좋은 알고리즘이 필요하다.
3. 어떻게 알고리즘을 공부해야 할까?
기본 개념 이해
코딩을 통한 문제풀이
응용 및 확장
기본적으로 위와 같은 3단계의 방법으로 공부를 하기로 했다. 먼저 각 파트에 해당하는 개념을 파악하고 어떻게 작동하는지 이해한 후에 그 내용을 코드로 구현한다. (1,2과정을 동시에 진행할 수도 있다.) 그 후 이해한 내용을 바탕으로 또 다른 문제를 풀어면서 개념을 본인의 것으로 만든다.