알고리즘이란?
문제를 해결하기 위한 절차를 의미한다.
같은 문제를 해결하는 다른 알고리즘과 비교해 문제 해결속도가 빠를수록 좋은 알고리즘이다.
알고리즘의 조건 5가지
입력 | 외부에서 제공되는 자료가 0개 이상 존재해야 한다. |
출력 | 모든 입력에 대해 모두 같은 출력이 나와서는 안된다. 가령 어떤 알고리즘에 대해 입력할 수 있는 수가 1부터 100까지라 가정하자. 1부터 100까지 각각 입력했을 때 모든 출력이 같아서는 안된다는 것이다. 즉, 적어도 두 가지 이상의 서로 다른 출력값이 나와야 한다. |
명확성 | 수행 과정이 명확해야 한다. 비유하기에 무리가 있을 수 있지만, 쉬운 이해를 위해 일상 생활에 비유해 보자. 거실에 서 있는 당신이 닫힌 안방 안의 의자에 앉기 위한 방법을 컴퓨터에게 설명해 보자. 만약 '안방에 들어가서 의자에 앉는다' 라고 적는다면, 아마 컴퓨터는 이해하지 못할 것이다. 적어도 '안방 문 앞까지 걸어가고, 오른손 또는 왼손으로 안방 문 손잡이를 잡은 뒤 손목을 돌리면서 문을 밀며 문을 연다. 이후 안방에 있는 의자 앞까지 걸어간 후 앉는다' 와 같이 방법 하나하나를 제시해야만 할 것이다. 이처럼 우리가 개떡같이 말한다고 해도 찰떡같이 알아들을 만큼 프로그래밍 언어와 컴퓨터는 똑똑하지 않다. 따라서, 수행 과정 하나하나는 컴퓨터가 이해할 수 있을만큼 명확해야만 한다. |
유한성 | 모든 알고리즘은 유한한 횟수 이내에 문제를 해결할 수 있어야 한다. |
효율성 | 모든 과정은 명확하게 실행이 가능해야 한다. |
알고리즘을 나타내는 방법
크게 자연어, 순서도, 의사코드, 프로그래밍 언어로 나누어 진다.
자연어 | 사람이 일상에서 의사소통을 할 때 사용하는 말을 자연어라고 한다. 인공적으로 만들어진 언어와 대비하기 위해 사용한다. |
의사코드 | 알고리즘을 작성할 때 알고리즘의 작동 논리를 표현하는 코드이다. 프로그래밍 언어를 흉내내었기 때문에 프로그래밍 언어와는 문법이 다르며, 따라서 일반적인 프로그래밍을 할 때 의사코드를 실행할 수 없다. |
순서도 | 알고리즘의 데이터 처리나 작업의 흐름을 여러 도형과 기호 등으로 나타낸 도표를 의미한다. |
프로그래밍 언어 | 우리가 아는 Python, C, C++ 등과 같은 언어를 말한다. |
'알고리즘, 자료구조' 카테고리의 다른 글
[알고리즘] 누적 합 (Prefix Sum) (0) | 2025.02.21 |
---|---|
[알고리즘] 깊이 우선 탐색 (Depth-First Search, DFS) (0) | 2025.01.05 |
[알고리즘] 벨만-포드 알고리즘 (Bellman-Ford Algorithm) (0) | 2025.01.04 |
[검색 알고리즘] 선형 검색 (0) | 2022.04.12 |
컴퓨팅적 사고 (0) | 2022.03.21 |