알고리즘
- 컴퓨터가 어떻게 순서대로 필요한 동작을 하며 문제를 처리하는것을 알고리즘이라고 하는데 이번 시간에는 알고리즘을 알아보자!
<핵심단어>
🔎이번에는 출력(output)에 하당하는것을 배워보자
{:width=10}
🔎 위와같이 입력(input)에서 출력(output)을 얻을 수 있을까?
컴퓨팅은 입력을 받아 그 입력을 처리한 후 출력하는 과정이다.
알고리즘은 입력에서 받은 자료를 출력(output)형태로 만드는 처리과정을 뜻한다.
즉, 알고리즘이란 입력값을 출력값의 형태로 바꾸기 위해
어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열입니다.
공부했던 자료를 참고해보자
예를들어, 전화번호부에서 Mike Smith를 찾는 일을 한다고 가정하자
전화번호부를 집어 들고 첫 페이지를 펼친 후 Mike Smith가
그 페이지에 있는지 찾습니다 없으면 그 다음 페이지로 넘어가고
Mike Smith를 찾을 때까지 혹은 넌화번호부가 끝날 때까지 반복합니다.
하지만 언젠가는 Mike Smith가 전화번호부에 있다면 이 알고리즘을 통해
Mike Smith를 찾을 수 있을것 것입니다.
알고리즘의 평가할 때는 정확성도 중요하지만 ,효율성도 중요하게 생각합니다.
효율성은 작업을 완료하기까지 얼마나 시간과 노력을 덜 들일 수 있는지에
대한 것입니다.
아시다시피 이 반복된 행위는 정확하지만 시간이 오래걸리고 비효율적인
알고리즘이라는 것은 누구나 알것입니다.🤔
그렇다고 2~3페이지씩 넘어가면그 사이에 Mike Smith가 넘어갈 수 있어 이것도 좋은 알고리즘이라고 생각되지 않습니다, 그러면 어떻게 해야할까요?🤷♂️
위에대한 해결방법은 일단 책의 가운데 부분을 펼친다. 만약 Mike Smith가 있다면 그 알고리즘은 끝날 것입니다.
하지만 일반적으로 전화번호부는 이름순으로(알파벳순)정렬되어 있으며
앞부분인지 뒷부분인지 쉽게 알 수 있습니다.
그 똑같은 행동을 반복하면 마지막 한 페이지가 남을 때까지 계속 수행합니다. 기존 알고리즘보다 훨씬 효율적인 알고리즘이라고 생각합니다.👌
이제 앞서 나온 알고리즘의 정의에 대해 느낌이 올거다.
위와 같은 알고리즘을 의사코드라는 방식으로 통해 간단하게
정리 할 수 있다. 의사코드는 필요한 행동이나 조건을 잘 설정하여
컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와준다.
_Pick up_ phone book
_Open to_ middle of phone book
Look at_ page
If Smith is on page
_call_ Mike
Else if Smith is rarlier in book
_Open to_ middle of left haalf of book
Go back to line 3
Else if Smith is later in book
_Open to_ middle of right half of book
Go back to line 3
Else
_Quit_
1.전화번호 픽업
2.전화번호부의 중간을 편다
3.페이지를 본다.
4.만약 Mike Smith가 페이지에 있으면
5.Mike Smith에게 전화한다.
6.그렇지않고 Mike Smith가 앞페이지에 있으면
7.앞페이지의 절반 펼침
8. 3번째 줄부터 다시 실행
9. 그렇지 않고 만약 Smith가 뒷 페이지에 있으면
10.뒷 페이지의 절반을 편다
11. 3번째 줄부터 다시 실행
12.그러지않으면
13.그만둔다.
위와같이 의사코드를 보면 따로 표시한 부분이 있을거다
그것을 함수(functions)로 부르며 동사와 비슷한 역할이다.
출처:
https://leverageedu.com/blog/be-computer-science/
https://m.boostcourse.org/