CS50 2-1강 알고리즘

업데이트:
1 분 소요

alt

알고리즘

알고리즘

  • 컴퓨팅은 입력을 받아 그 입력을 처리한 후 출력하는 과정입니다.
  • 알고리즘은 입력에서 받은 자료를 출력형태로 만드는 처리과정을 뜻합니다.
  • 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한
    규칙들의 순서적 나열입니다.
  • 일련의 순서적 규칙들의 나열 방법에 따라 알고리즘의 종류가 달라진다.

정확한 알고리즘 (정확성)

  • 입력을 출력으로 바꾸기 위해 컴퓨터가 따르는 일련의 절차이다.
    예) 전화번호부에서 Mike Smith를 찾는 일을 한다고 합시다. 밑에 그림의 알고
    리즘을 살펴보면, 전화번호부를 집어 들고 첫페이지를 펼친 후 Mike Smith가  
    그페이지에 있는지 찾습니다. 없으면 그다음 페이지로 갑니다. Mike Smith를
     찾을 때까지 혹은 전화번호부가 끝날 때까지 이것을 반복한다.

alt

  • 알고리즘의 평가할 떄는 정확성도 중요하지만 효율성도 중요하다.
  • 효율성은 작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지에
    대한 척도이다.
  • 한번에 한 페이지씩 보는 알고리즘은 정확하지만, 효율적이지 x
  • 한 번에 두 페이지를 넘기게끔 하며 알고리즘을 개선할수 있다.
    이 알고리즘을 계속 사용한다면 Mike Smith가 있는 페이지를 그냥 넘어갈 수
    있으니 주의해야 한다. 이럴 때는 이전 페이지를 확인해야 한다.
    하지만 이문제를 해결하기에는 가장 효율적이지 않다.

효율적인 알고리즘 (효율성)

  1. 이번에는 다른 알고리즘 (밑 사진)을 적용하여 Mike Smith를 찾아봅시다.
  2. 먼저, 전화번호부 가운데를 폅니다.
    • 만약, Mike Smith가 그페이지에 있다면 우리 알고리즘은 끝납니다.
  3. 없다면, 전화번호부가 이름순으로 정렬되어 있으므로 우리는 Mike Smith가 지금
    페이지 보다 앞에 있는지 뒤에 있는지 알고 있다.
  4. 그러므로 책의 절반을 버릴 수 있게 되고 나머지 절반에 대해 똑같은 알고리즘
    수행한다.
  5. 한 페이지가 남을 떄까지 계속 수행한다.
  6. 마지막에 남은 한 페이지에는 Mike Smith의 이름이 있거나 없거나 둘중 하나이다.

alt

  • 이 알고리즘은 기초 알고리즘보다 더 효율적이다.

생각해보기

  1. 김밥을 만드는 절차를 세분화해서 김밥 만드는 과정을 알고리즘으로 표현해보시오.
    1. 김밥 재료를 구한다.
    2. 김밥 김을 밑에깐다.
    3. 밥을 깐다.
    4. 속재료 등등을 넣는다.
    5. 돌돌만다.
    6. 썬다.
  1. 1부터 100까지의 모든 숫자를 암산으로 더해봅시다.
    1부터 100까지 전부 더했다.
    5050

댓글남기기