CS50 2-1강 알고리즘
알고리즘
알고리즘
- 컴퓨팅은 입력을 받아 그 입력을 처리한 후 출력하는 과정입니다.
- 알고리즘은 입력에서 받은 자료를 출력형태로 만드는 처리과정을 뜻합니다.
- 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한
규칙들의 순서적 나열입니다. - 일련의 순서적 규칙들의 나열 방법에 따라 알고리즘의 종류가 달라진다.
정확한 알고리즘 (정확성)
- 입력을 출력으로 바꾸기 위해 컴퓨터가 따르는 일련의 절차이다.
예) 전화번호부에서 Mike Smith를 찾는 일을 한다고 합시다. 밑에 그림의 알고
리즘을 살펴보면, 전화번호부를 집어 들고 첫페이지를 펼친 후 Mike Smith가
그페이지에 있는지 찾습니다. 없으면 그다음 페이지로 갑니다. Mike Smith를
찾을 때까지 혹은 전화번호부가 끝날 때까지 이것을 반복한다.
- 알고리즘의 평가할 떄는 정확성도 중요하지만 효율성도 중요하다.
- 효율성은 작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지에
대한 척도이다. - 한번에 한 페이지씩 보는 알고리즘은 정확하지만, 효율적이지 x
- 한 번에 두 페이지를 넘기게끔 하며 알고리즘을 개선할수 있다.
이 알고리즘을 계속 사용한다면 Mike Smith가 있는 페이지를 그냥 넘어갈 수
있으니 주의해야 한다. 이럴 때는 이전 페이지를 확인해야 한다.
하지만 이문제를 해결하기에는 가장 효율적이지 않다.
효율적인 알고리즘 (효율성)
- 이번에는 다른 알고리즘 (밑 사진)을 적용하여 Mike Smith를 찾아봅시다.
- 먼저, 전화번호부 가운데를 폅니다.
- 만약, Mike Smith가 그페이지에 있다면 우리 알고리즘은 끝납니다.
- 없다면, 전화번호부가 이름순으로 정렬되어 있으므로 우리는 Mike Smith가 지금
페이지 보다 앞에 있는지 뒤에 있는지 알고 있다. - 그러므로 책의 절반을 버릴 수 있게 되고 나머지 절반에 대해 똑같은 알고리즘
수행한다. - 한 페이지가 남을 떄까지 계속 수행한다.
- 마지막에 남은 한 페이지에는 Mike Smith의 이름이 있거나 없거나 둘중 하나이다.
- 이 알고리즘은 기초 알고리즘보다 더 효율적이다.
생각해보기
- 김밥을 만드는 절차를 세분화해서 김밥 만드는 과정을 알고리즘으로 표현해보시오.
1. 김밥 재료를 구한다.
2. 김밥 김을 밑에깐다.
3. 밥을 깐다.
4. 속재료 등등을 넣는다.
5. 돌돌만다.
6. 썬다.
- 1부터 100까지의 모든 숫자를 암산으로 더해봅시다.
1부터 100까지 전부 더했다.
5050
댓글남기기