알고리즘
1. 알고리즘의 이해
정의
알고리즘은 "문제해결 방법을 추상화하여 단계적 절차를 논리적으로 기술해 놓은 명세서"입니다.
프로그램과의 관계
프로그램은 자료구조(data structure) 와 알고리즘(algorithm) 으로 구성됩니다.
알고리즘의 조건
효과적인 알고리즘이 되기 위해서는 다음 5가지 조건을 충족해야 합니다.
| 조건 | 설명 |
|---|---|
| 입력(input) | 알고리즘 수행에 필요한 자료가 외부에서 입력으로 제공되어야 함 |
| 출력(output) | 알고리즘 수행 후 하나 이상의 결과를 출력해야 함 |
| 명확성(definiteness) | 수행할 작업의 내용과 순서가 명확하게 명세되어야 함 |
| 유한성(finiteness) | 알고리즘은 수행 뒤에 반드시 종료되어야 함 |
| 효과성(effectiveness) | 알고리즘의 모든 명령어는 기본적이며 실행 가능해야 함 |
올바른 알고리즘
"어떠한 경우에도 실행 결과가 똑같이 나오는 것"을 의미합니다. 만약 실행 결과가 경우에 따라 맞거나 틀리면 올바른 알고리즘이라고 할 수 없습니다.
학습 목표: 알고리즘의 개념을 이해하고, 알고리즘의 표현 방법을 설명할 수 있으며, 성능 분석 방법을 설명하고, 간단한 프로그램을 통해 알고리즘을 이해하고 정의 등을 설명할 수 있습니다.
2. 알고리즘의 표현 방법
알고리즘은 다양한 방법으로 표현될 수 있으며, 주요 방법은 다음과 같습니다.
2.1 자연어를 이용한 서술적 표현 방법
일상 언어로 알고리즘을 설명합니다.
예시: 딸기 시럽 치즈케이크 만들기
2.2 순서도(flow chart)를 이용한 도식화 표현 방법
문제에 대한 정의, 분석, 해법을 그림으로 표현합니다.
순서도에는 다음과 같은 다양한 기호가 사용됩니다:
- 데이터, 처리, 미리 정의한 처리, 판단, 선, 단말, 루프 범위 등
예시: 1부터 5까지의 합을 구하는 알고리즘 순서도
2.3 프로그래밍 언어를 이용한 구체화 방법
특정 프로그래밍 언어로 직접 코드를 작성합니다.
2.4 가상코드(pseudo-code)를 이용한 추상화 방법
프로그래밍 언어의 일반적인 형태와 유사하게 알고리즘을 표현하지만, 특정 언어는 아니므로 직접 실행은 불가능합니다. 특정 프로그래밍 언어로의 변환이 용이합니다.
기본 요소
- 변수, 자료형(정수형, 실수형, 문자형 등), 연산자(산술, 관계, 논리) 등을 사용
지정문 형식
변수 <- 값; (예: a <- 5;)
제어 구조
알고리즘의 흐름을 제어하는 방식입니다.
조건문
조건에 따라 실행할 명령문이 결정되는 선택적 제어 구조입니다.
if-then-else형,if-then형- 다단계 조건문, 중첩 if문
- case문: 여러 조건식 중 해당 조건을 찾아 명령문을 수행하며, 중첩 if문으로 표현 가능
반복문(loop)
일정한 명령을 반복 수행하는 제어 구조입니다.
반복문의 종류:
for (초깃값; 조건식; 증감값) do 명령문;
while (조건식) do 명령문;
do 명령문; while (조건식);
반복문의 특징:
- 사전 판단 반복 (
while,for): 실행 전에 반복 여부를 판단하며, 제어식 결과가 0이면 루프 본문이 한 번도 실행되지 않을 수 있음 - 사후 판단 반복 (
do-while): 루프 본문을 한 번 실행한 다음에 반복 여부를 판단하며, 루프 본문이 적어도 한 번은 실행됨 - 다중 루프: 반복문 안에 다시 반복문이 중첩되는 구조 (이중 루프, 삼중 루프 등)
함수문
처리 작업을 별도 모듈화하여 만든 부프로그램입니다.
함수 이름(매개변수)
명령문;
...
return 결괏값;
end