01. 자료구조와 알고리즘

2022. 11. 13. 15:43자료구조, 알고리즘

728x90
반응형

(해당 내용은 "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;
	}
}
728x90
반응형

'자료구조, 알고리즘' 카테고리의 다른 글

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