본문 바로가기

Computer Science&Engineering/자료구조

자료구조와 알고리즘은 무엇인가

# 프로그램 = 자료구조 + 알고리즘

프로그램은 자료구조와 알고리즘으로 이루어진다. 예를 들어, 최대값을 찾는 프로그램은 배열이라는 자료구조에 순차탐색 알고리즘을 이용하여 구현할 수 있다. 따라서, 컴퓨터 프로그램을 짜려면 자료구조와 알고리즘을 잘 익혀두어야 한다. 

 

# 자료구조의 종류와 예시

 - 스택(Stack) : 스택은 영어로 "쌓아두다"라는 뜻이다. 따라서 책을 쌓아두는 것을 떠올리면 된다.

 - 큐 (Queue) : 큐는 영어로 "열, 줄 세우기"라는 뜻이다. 마트에서 계산할 때 줄서는 것을 생각하면 된다.

 - 리스트 (List) : 리스트는 "목록" 정도로 생각하면 좋을 것 같다. 할 일 목록이 순서대로 나열된 것을 예로 들 수 있다.

 - 트리 (Tree) : 트리는 "나무"이다. 나뭇가지가 뻗어나가는 형상을 본 따 지은것 같다. 일상 생활에서 조직도를 떠올리면 된다. Gragh의 일종이다. 

 

Data Structure in Daily Life

# 알고리즘의 조건

알고리즘은 문제 해결을 위한 단계적 절차를 의미한다. 알고리즘의 요구조건은 아래 다섯가지다.

1. 입력 (Input) : 입력이 없거나 있을 수 있다.

2. 출력 (Output) : 최소한 하나의 출력은 있어야 한다.

3. 명백성, 명확성 (Plainness) : 명령의 의미가 뚜렷해야 한다.

4. 유한성 (Finiteness) : 유한한 단계를 마친 후에 종료되어야 한다.

5. 타당성 (Validity) : 각 명령은 실행가능한 명령이어야 한다.

 

# 알고리즘을 표현하는 법

 - 말 (Natural language)

 - 순서도(Flow chart)

 - 의사코드 (Pseudo code)  // 비슷한 코드, 대충코드라 부르는 건 어떨까?

 - 프로그래밍 언어 (Programming language) // C/C++, Python 등

 

 - 각 표현별 장단점 정리

 

  장점 단점
말 (Natural Language) 사람이 읽기 편함 명확하지 않음
순서도 (Flow chart) 직관적이며 이해하기 편함 복잡한 알고리즘을 표현하기에 적합하지 않음
의사코드 (Pseudo code) 알고리즘을 효과적으로 표현, 넓게 활용됨 프로그래밍 언어보다는 표현이 명확하지 않음
프로그래밍 언어 가장 정확한 표현 가능 언어의 구체적인 특징들 때문에 이해가 어려울 수 있음

 

 

 

# 이화여대 민동보교수님 2018년 2학기 Data Structure 수업자료와 도서 뇌를 자극하는 알고리즘 등 참고하여 작성

반응형