알고리즘(algorithm)이란 문제를 해결하는 데 도움이 되는 단계별 절차를 의미합니다. 만약 이 절차를 영어 문장 형태로 작성한다면, 이를 슈도코드(PSEUDO CODE)라고 부릅니다.
알고리즘이 갖추어야 할 5가지 속성
하나의 알고리즘이 되기 위해서는 반드시 다음 다섯 가지 속성을 충족해야 합니다.
- 입력(Input) – 외부로부터 하나 이상의 값을 받아들일 수 있어야 합니다.
- 출력(Output) – 최소한 하나 이상의 결과를 산출해야 합니다.
- 유한성(Finiteness) – 유한한 단계 안에서 반드시 종료되어야 합니다.
- 명확성(Definiteness) – 각 단계는 모호함 없이 명확하게 정의되어야 합니다.
- 효과성(Effectiveness) – 각 단계는 실제로 수행 가능하고 단순해야 합니다.
알고리즘 예시
세 개의 숫자 평균을 구하는 알고리즘은 다음과 같습니다.
- 시작(Start)
- 세 숫자 a, b, c를 입력받는다
- 합계를 계산한다: sum = a + b + c
- 평균을 계산한다: average = sum / 3
- 평균값을 출력한다
- 종료(Stop)
순서도(FLOW CHART)란?
알고리즘을 도식화하여 시각적으로 표현한 것을 순서도(flow chart)라고 합니다. 순서도를 사용하면 복잡한 논리 흐름도 한눈에 파악할 수 있어 프로그램 설계와 디버깅에 큰 도움이 됩니다.
순서도에서 사용하는 주요 기호
| 이름 | 기호 모양 | 용도 |
|---|---|---|
| 단자(Terminal) | 타원(Oval) | 시작(start/begin) 또는 종료(stop/end)를 나타냅니다. |
| 입출력(Input/Output) | ![]() 평행사변형(Parallelogram) | 데이터의 입력과 출력을 나타냅니다. |
| 처리(Process) | 직사각형(Rectangle) | 수행해야 할 모든 처리 과정(연산)을 표현합니다. |
| 판단 상자(Decision Box) | 마름모(Diamond) | 조건을 검사하여 여러 대안 경로 중 어느 것을 따를지 결정합니다. |
| 커넥터(Connector) | 원(Circle) | 순서도의 서로 다른 부분을 연결할 때 사용합니다. |
| 흐름선(Flow) | 화살표(Arrows) | 두 기호를 연결하며 실행 흐름의 방향을 나타냅니다. |
| 미리 정의된 처리(Predefined Process) | 이중 선 사각형(Double Sided Rectangle) | 다른 곳에 정의된 모듈(module) 또는 서브루틴(subroutine)을 나타냅니다. |
| 페이지 커넥터(Page Connector) | 오각형(Pentagon) | 서로 다른 두 페이지에 걸친 순서도를 연결할 때 사용합니다. |
| for 루프 기호(For Loop Symbol) | 육각형(Hexagon) | 루프 변수의 초기화, 조건 검사, 증가 과정을 한 번에 표시합니다. |
| 문서(Document) | 인쇄물(Printout) | 인쇄 준비가 된 데이터를 나타냅니다. |
순서도 예시
아래는 앞서 살펴본 '세 개의 숫자 평균 구하기' 알고리즘을 순서도로 표현한 것입니다.

이처럼 알고리즘을 먼저 슈도코드나 글로 정리한 뒤 순서도로 시각화하면, 실제 C 언어 코드를 작성하기 전에 프로그램의 전체적인 논리 구조를 명확히 점검할 수 있습니다.
타원(Oval)
직사각형(Rectangle)
마름모(Diamond)
원(Circle)
화살표(Arrows)
이중 선 사각형(Double Sided Rectangle)
오각형(Pentagon)
육각형(Hexagon)
인쇄물(Printout)