알고리즘의 표현
알고리즘의 표현하기
알고리즘은 여러 가지 방식으로 표현할 수 있다. 대표적으로는 일상적인 언어, 순서도, 의사 코드, 프로그래밍 코드가 있다. 이러현 다양한 표현 방식을 통해 알고리즘을 보다 쉽게 이해하고 구현할 수 있도록 할 수 있다.
알고리즘의 표현 방법들
다음은 최소값을 찾는 알고리즘을 다양한 방법으로 표현해본 것이다.
(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