본문 바로가기
Programming/자료구조

[자료구조] 01. 자료 구조와 알고리즘

by happy_jinsu 2021. 10. 12.

< 자료구조와 알고리즘 >

* 자료구조 : 데이터의 표현 및 저장 방법

* 알고리즘 : 문제의 해결 방법, 문제를 풀기 위한 단계적 절차. 자료구조에 의존적임.

인형이 들어있는 박스를 찾는다고 가정했을 때, 어떤 것이 자료구조와 알고리즘에 해당하는지에 대한 예시.

 

 < 알고리즘이 되기 위한 조건 >

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언어로 쉽게 풀어쓴 자료구조>, <윤성우의 열혈 자료구조>