알고리즘이란?
- 주어진 문제를 해결하기 위한 잘 정의된 동작들의 유한 집합
- 어떤 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것
- 문제를 풀거나 작업을 수행하기 위한 단계적인 방법
자료구조와 알고리즘의 차이점
- 알고리즘 : 문제 해결의 방법을 정의
- 자료구조 : 행위의 객체(무엇을)
알고리즘을 사용하는 이유
- 효율성 - 성능과 가장 연관이 있다. (code size를 작게 한다.)
- 추상화 - 중요한 기능들을 사용자들로부터 보지 못하게 한다. (숨긴다.)
- 재사용성 - 문맥을 자유롭게 재사용 가능하다.
- 모듈화
알고리즘으로 어떤 문제를 푸는가?
- 네비게이션 시스템
- 두 지점 간의 최단 경로 검색
- 최단 시간이 걸리는 경로 검색
- 인터넷 검색
- 원하는 결과를 최대한 빨리, 최대한 만족스럽게 제공
기본 문법
- sequence : 순차 실행
- Decision : 조건
- Repetition : 반복 (성능을 결정하는 가장 중요한 부분)
알고리즘의 표현 방법
- 순서도 (flow chart)
- 알고리즘을 그림으로 표현한 것
- 의사 코드 (pseudo-code)
- 알고리즘을 영어와 비슷한 자연어로 표현한 것
순서도의 장단점
- 장점 : 그림으로 표현을 해 사람들이 시각적으로 이해하기 쉽다.
- 단점 : 그림으로 그리다 보니 작성하는 데 시간이 많이 걸린다.
의사 코드의 장단점
- 장점 : 알고리즘을 작성하는 데 시간이 조금 걸린다.
- 단점 : 작성하는 사람마다 다르게 작성하기 때문에 이해하기가 어렵다.
대부분의 경우 의사 코드로 작성을 하고 중요한 부분은 오해의 소지가 없도록 순서도를 사용하여 작성