# 프로그램 = 자료구조 + 알고리즘
프로그램은 자료구조와 알고리즘으로 이루어진다. 예를 들어, 최대값을 찾는 프로그램은 배열이라는 자료구조에 순차탐색 알고리즘을 이용하여 구현할 수 있다. 따라서, 컴퓨터 프로그램을 짜려면 자료구조와 알고리즘을 잘 익혀두어야 한다.
# 자료구조의 종류와 예시
- 스택(Stack) : 스택은 영어로 "쌓아두다"라는 뜻이다. 따라서 책을 쌓아두는 것을 떠올리면 된다.
- 큐 (Queue) : 큐는 영어로 "열, 줄 세우기"라는 뜻이다. 마트에서 계산할 때 줄서는 것을 생각하면 된다.
- 리스트 (List) : 리스트는 "목록" 정도로 생각하면 좋을 것 같다. 할 일 목록이 순서대로 나열된 것을 예로 들 수 있다.
- 트리 (Tree) : 트리는 "나무"이다. 나뭇가지가 뻗어나가는 형상을 본 따 지은것 같다. 일상 생활에서 조직도를 떠올리면 된다. Gragh의 일종이다.
# 알고리즘의 조건
알고리즘은 문제 해결을 위한 단계적 절차를 의미한다. 알고리즘의 요구조건은 아래 다섯가지다.
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 수업자료와 도서 뇌를 자극하는 알고리즘 등 참고하여 작성
'Computer Science&Engineering > 자료구조' 카테고리의 다른 글
알고리즘의 성능 분석 (시간복잡도 계산 방법) (0) | 2021.02.28 |
---|---|
추상 데이터 타입 (Abstract Data Type) 이란 (0) | 2021.02.27 |
자료구조(Data Structure) 정리 시작 (2) | 2021.02.27 |