알고리즘의 표현

알고리즘의 표현하기

알고리즘은 여러 가지 방식으로 표현할 수 있다. 대표적으로는 일상적인 언어, 순서도, 의사 코드, 프로그래밍 코드가 있다. 이러현 다양한 표현 방식을 통해 알고리즘을 보다 쉽게 이해하고 구현할 수 있도록 할 수 있다.

알고리즘의 표현 방법들

다음은 최소값을 찾는 알고리즘을 다양한 방법으로 표현해본 것이다.

(1) 일상 언어

일상 언어는 말 그대로 일상적으로 사용하는 언어를 통해 알고리즘을 표현하는 것을 의미한다. 이 방법은 일반적인 사람이 이해하기 쉽다는 장점이 있지만, 해석에 모호성이 있을 수 있어서 실제 프로그래밍에서는 사용되지 않는다.

1
2
3
4
5
1. 주어진 숫자들 중 첫 번째 숫자를 최소값으로 저장한다.  
2. 다음 숫자와 저장된 최소값을 비교한다.
3. 비교 후 더 작은 숫자를 새로운 최소값으로 저장한다한다.  
4. 주어진 숫자들 중 나머지가 있다면 2-3번 단계를 반복한다.
5. 모든 숫자를 확인했다면 최종적으로 저장된 최소값을 출력한다.  

(2) 의사 코드

의사 코드는 알고리즘을 표현하는 방법 중 하나로, 앞서 본 일상 언어 문장을 프로그래밍 언어와 유사한 형식으로 흉내내어 알고리즘을 서술한 코드를 의미한다. 의사(pseudo) 는 ‘모조의’ 혹은 ‘가짜의’ 라는 의미를 가진 단어로, 실제 프로그래밍 코드는 아니지만 그것을 흉내낸 형태를 지칭한다.

의사코드는 명확한 논리를 표현하면서도, 프로그래밍 언어에 종속되지 않기 때문에 개념적인 알고리즘 설계 단계에서 빠르면서 명확성을 더한 설명을 가능케 해준다.

1
2
3
4
5
6
7
8
9
최소값을 찾아야 하는 주어진 숫자 뭉치를 A 라고 했을 
i = 1;
min = A[0];
while (i < n) {
    A[i]  min 보다 작으면 > min = A[i];
    그렇지 않고 A[i]  min 보다 크거나 같다면 넘어간다;
    i = i + 1;
}
최소값 min  출력한다;

(3) 순서도

순서도는 도형을 이용해 알고리즘을 시각적으로 표현하는 방법이다. 일반적으로 순서도에서 각 도형은 아래와 같은 의미를 가진다.

도형 의미
타원 시작(start)과 끝(end)를 나타낸다.
평행사변형 입력(input)과 출력(output)을 나타낸다.
사각형 처리(process) 단계를 나타낸다.
마름모 조건문(decision)이나 분기(branch)를 나타낸다.

(4) 프로그래밍 코드

실제 컴퓨터에서 동작하는 프로그램을 만들기 위해 프로그래밍 언어로 이루어진 일련의 명령 집합 코드를 작성하여 알고리즘을 표현, 구현하는 방법이다. 모호하지 않고 명확하며, 실제 프로그램에 적용할 수 있지만 개발자가 아닌 일반인이 해석하기에는 어렵다는 특징이 있다.

1
2
3
4
5
6
7
8
9
10
11
def find_min(numbers):
    # 리스트가 비어있을 경우 None 을 반환
    if (numbers is None) or (len(numbers) == 0):
        return None
    # 최소값 찾기
    min_number = numbers[0]
    for num in numbers[1:]:
        if num < min_number:
            min_number = num
    # 결과값 반환
    return min_number

Reference

Wikipedia - 의사코드
알고리즘 - 이관용, 김진욱 공저