< 자료구조와 알고리즘 >
* 자료구조 : 데이터의 표현 및 저장 방법
* 알고리즘 : 문제의 해결 방법, 문제를 풀기 위한 단계적 절차. 자료구조에 의존적임.
< 알고리즘이 되기 위한 조건 >
1. 입력 : 0개 이상의 입력이 존재해야 한다.
2. 출력 : 1개 이상의 출력 즉, 반환 값이 존재해야 한다.
3. 명백성 : 각 명령어의 의미는(입출력은) 명확해야 한다.
4. 유한성 : 반드시 종료 되어야 한다. (무한 루프에 빠져서는 안 된다.)
5. 유효성 : 컴퓨터로 실행 가능한 연산이어야 한다.
< 알고리즘을 기술(표현)하는 4가지 방법>
1. 자연어 (Natural Language / 말, 글로 기술)
-장점 : 사람이 읽기 쉽다.
-단점 : 간결하지 않고, 코드로 변환하기 어렵다.(모호성 존재)
2. 플로우 차트 (Flow Chart)
-장점 : 초보자들에게 좋음. 큰 흐름을 볼 때 적합. 직관적임.
-단점 : 복잡한 알고리즘의 경우, 이해하기 어려움. 자료구조와 알고리즘에는 부적합.
3. 수도 코드 (= 의사 코드, 유사 코드 )(Pseudo-Code)
-장점 : 프로그래밍 언어로 표현에 용이. 논리적 오류 검출에 용이. (알고리즘의 핵심적인 내용에만 집중)
+) 수도 코드의 문법 : C언어 문법, Python과 유사.
괄호 사용을 최대한 자제하고 들여 쓰기(indentation) 준수.
대입 연산자 (=) : ' ← ' 화살표로 사용.
//배열에서 최대값을 찾는 알고리즘을 수도 코드로 표현한 예
//[C언어로 쉽게 풀어쓴 자료구조]의 예시 수도코드
ArrayMax(list, N):
largest<-list[0]
for i<-1 to N-1 do
if list[i]>largest
then largest<-list[i]
return largest
4. 프로그래밍 언어
-단점 : 프로그램의 핵심적인 내용에 대한 이해를 방해할 수 있음.
▶알고리즘을 표현 할 때, 3,4번의 방식을 가장 많이 사용.
참고 서적 : <C언어로 쉽게 풀어쓴 자료구조>, <윤성우의 열혈 자료구조>
'Programming > 자료구조' 카테고리의 다른 글
[자료구조] 06. 재귀 (Recursion) (0) | 2021.10.23 |
---|---|
[자료구조] 05. 알고리즘의 효율성 (최선, 평균,최악) (0) | 2021.10.22 |
[자료구조] 04. 빅오메가 표기법 & 빅세타 표기법 (0) | 2021.10.21 |
[자료구조] 03. 알고리즘의 성능 분석(시간 복잡도, 빅오 표기법) (0) | 2021.10.20 |
[자료구조] 02. 추상 데이터 타입 (0) | 2021.10.20 |