알고리즘?
사람마다 정의가 다 다르지만 결국엔
"문제를 어떤 식으로 푸는 것이 최선인가" 로 정의될 수 있다.
그렇다면 최선인 경우의 수는?
컴퓨터는 많은 방법을 시도할 수 있다.
- 수없이 많은 경우의 수를 하나씩 비교해서 그 중 최선을 골라내거나
- 하나씩 비교하지 않더라도 가장 좋아 보이는 것을 먼저 찾아냈다면, 뒤쪽의 경우의 수를 그냥 무시하는 경우
다만 그 속도가 빨라서 이과정을 보는 사람들에게는 그저 입력하면 나오는것으로 보인다.
getting started
문제를 이해하자
- 흔히 코딩 테스트에서는 문제 설명과 입출력예시 및 제한사항, 주의사항등으로 어떤 문제를 해결해야 하는지 설명해준다. 주어진 조건을 토대로 어떤 문제인지를 이해하는 것부터 시작한다.
문제를 어떻게 해결할 수 있을지에 대한 전략을 세워보자
- 페어와 수도코드를 먼저 작성해보자! 알고리즘 전략은 수도코드를 잘 짜는 것에서부터 시작한다
- 연습장에 전체적인 그림을 그려가면서 페어와 나눠보자
- 막혔던 생각이 페어에게 설명을 하면서 해결되는 경우도 있고, 전체적인 흐름을 공유할 수 있게 된다.
문제를 코드로 옮겨보자
- 페어와 논의했던 전략을 코드로 옮겨보자
- 구현한 코드를 페어와 논의해보고, 구현한 코드의 최적화를 시도해보자
개발자적 사고방식을 얻을수있는 과정이고
고통스러울것이다.
문제해결이 최종목적이지만 그 과정이 더 중요하다.
화이팅!