2022. 11. 13. 15:43ㆍ자료구조, 알고리즘
(해당 내용은 "C++로 쉽게 플어쓴 자료구조(천인국, 최영규 저, 2016)"을 기반으로 작성되었습니다.)
(해당 내용은 자료구조/알고리즘을 공부하기 위해 작성된 것이므로, 내용에 오류가 있을 수 있습니다.)
1) 자료구조란?
자료구조(data structure)는 현실에서 책장 정리나 가구 배치와 같은 것으로 비유할 수 있습니다.
집안 정리가 잘 되어 있거나 컴퓨터에서 파일이 잘 정리되어 있다면 무언가를 찾거나 어떤 일을 수행할 때 더 효율적으로 처리할 수 있을 겁니다.
이와 마찬가지로 자료구조란 컴퓨터가 프로그램을 보다 효율적으로 처리할 수 있도록 일련의 자료들을 정리하는 방법(구조화)를 뜻합니다.
2) 자료구조의 분류
자료구조의 분류는 아래와 같습니다.

- 단순 자료구조 : 숫자, 문자 등과 같이 프로그래밍 언어에서 기본적으로 제공하는 자료구조이며, 자료형이라고도 함
- 복합 자료구조 : 기본 자료구조들을 조합 및 정리한 것으로서, 선형 구조와 비선형 구조로 나뉨
- 선형 자료구조 : 자료들이 순서대로 나열되는 형태
- 비선형 자료구조 : 자료들 간 순서 없이 복잡한 연결을 갖는 형태
3) 알고리즘이란?
알고리즘(algorithm)이란 어떤 문제가 주어질 때 컴퓨터 프로그램이 이 문제를 풀기 위한 과정이나 방법을 뜻합니다.
프로그램의 자료들은 자료구조를 통해 분류되어 있고, 이를 알고리즘을 통해 문제를 해결합니다.

※ 알고리즘의 조건
- 0개 이상의 입력이 존재(입력값이 없어도 됨)
- 1개 이상의 출력이 존재(입력값은 없어도 되나, 출력값은 반드시 하나 이상이어야 함)
- 각 명령어들은 반드시 명확하여야 함
- 충분한 횟수의 계산을 거친 후 반드시 종료되어야 함(무한루프 금지)
- 각 명령어들은 연산이 가능해야 함
4) 알고리즘 기술 방법
알고리즘을 기술하는 방법은 총 4가지가 존재합니다.
① 자연어
② 흐름도(flowchart)
③유사 코드(pseudo-code)
④ 프로그래밍 언어(C++, java 등)
① 자연어
- 영어나 한국어 등으로 알고리즘을 기술한 것
- 일반적으로 글로 알고리즘을 설명하기 때문에 설명에 사용되는 단어나 문장은 명확
"Hello World"를 반복 출력하는 프로그램
1. 문자열 A에 "Hello World"를 입력
2. i가 0에서부터 시작하여 5 미만이 될때까지 "Hello World" 출력
3. i가 5 이상이 되면 프로그램 종료
② 흐름도(flowchart)
- 프로그램이 처리되는 과정을 각종 기호와 화살표로 표현한 것
- 알고리즘을 보다 명확하게 표현할 수는 있으나, 복잡한 알고리즘에는 적절하지 못함

③ 유사 코드(pseudo-code)
- 일반적으로 사용하는 자연어 등을 코드 형식으로 작성
- 컴퓨터가 아닌 사람을 대상으로 해당 알고리즘을 이해시키는 목적으로 작성
- 프로그램 설계 시 코딩 방법을 설계하는 데 도움이 됨
메인 프로그램
{
문자열 A ← "Hello World"
for(i ← 0애서 시작하여 5 미만까지, 순환할 때마다 i는 1씩 더함)
{
순환할 때마다 문자열 A 출력
}
프로그램 종료
}
④ 프로그래밍 언어
- C 와 java 등으로 알고리즘을 작성하는 방법
- 특정 프로그래밍 언어로 작성되어 있어, 해당 언어를 사용하지 않는 사람들은 이해하는 데 어려움이 있을 수 있음
# include <iostream>
using namespace std;
int main()
{
string A = "Hello World";
for (int i = 0; i < 5; i++)
{
cout << A << endl;
}
}'자료구조, 알고리즘' 카테고리의 다른 글
| 05. 포인터 (4) | 2022.12.30 |
|---|---|
| 04. 클래스 (4) | 2022.12.22 |
| 03. 배열 (2) | 2022.12.03 |
| 02. 알고리즘 시간 복잡도 함수(2) (1) | 2022.11.24 |
| 02. 알고리즘 시간 복잡도 함수(1) (6) | 2022.11.16 |