직업은 선물 트레이더

알고리즘, 간략하게 알아보자

잊어버린 과거

컴퓨터에서 알고리즘을 만드는 과정은 필수적인 과정입니다.

알고리즘을 우리말로하면 '문제를 푸는 방법' 이니까요.

이는 현실 어디에서나 알고리즘이 사용되고있고

또 이 알고리즘없이 어떠한 일도 할 수 없음을 의미합니다.







음 그래도 느낌이 잘 안오는데요

문제를 푸는 방법이라고 했죠?

그럼 한번 냉장고에서 우유를 꺼내 마시기까지 과정을 한번 생각해봅시다.

먼저 냉장고를 열겠죠 그다음 우유를 찾아서 꺼낸다음 컵에따라 마실겁니다. 생각해보면 여기에 뭔 알고리즘이 있나 싶겠지만, '우유를 마셔야겠다' 생각 하는게 '문제'이고 우리가 이 문제를 푸는 과정이 '알고리즘'입니다. 좀더 정형화 하자면 다음과같겠습니다.


[우유마시기]
1. 냉장고를 연다
2. 우유를 찾는다.
3. 마신다

컴퓨터에서 알고리즘을 생각해보자

컴퓨터는 고속으로 데이터를 처리하는 기계입니다. 때문에 한가지 단어엔 한가지 의미만이 있어야 정확하게 일을 처리할 수 있습니다. 그러나 현실에서 쓰는 자연어에는 하나의 단어에 한가지를 초과하는 의미를 가진 것들이 많으며, 때문에 이는 컴퓨터에게 알아듣게 하기위해선 '프로그래밍 언어' 라는게 필요하게되었지만 이는 때로 사람사이의 대화에서마저 방해되기도 합니다.


이렇게 개발된 프로그래밍언어는 한가지 기호에 한가지 의미만을 가지는 매우 정확하고 신뢰할 수 있는 언어입니다. 대신 사람이 다루긴 힘듭니다 ^^; 문법은 서구쪽에서 개발했기 때문에 영어와 비슷한 편이지만 우리가 쓰는 자연어와는 생각을 표현하는 흐름이 뭔가가 다릅니다.





프로그래밍언어가 용도마다 개발시점마다 굉장히 다양하게 있으므로, 사람들끼리 정확히 알고리즘을 표현하기위해서 프로그래밍 언어와는 비슷하지만 프로그래밍 언어는 아닌 수도코드(pseudocode = 모의코드) 나 혹은 그림인 플로우차트(Flowchart)를 사용하기도 합니다. 플로우차트는 커다란 알고리즘의 구도를 잡거나 간단한 알고리즘을 표현하는데 유리하며 수도코드는 간단하거나 작은 알고리즘을 표현하는데 유리합니다.


위에서 우리가만든 알고리즘인 [우유마시기]기는 너무 간단하기 때문에 굳이 수도코드나 플로우차트로 만들필요는 없겠습니다.