1. 소개 [자료구조와 알고리즘 with C++]

앞으로 이 글에서는 컴퓨터 프로그래머의 기초 지식인 알고리즘과 자료구조를 이론적인 접근과 실질적인 구현을 다룰거예요.

자료구조는 프로그램에 관라할 데이터를 어떠한 구조로 보관하고 접근할 것인가를 다루는 것입니다. 선형 자료구조인 배열이나 연결리스트, 스택, 큐와 비선형 자료구조인 트리, 그래프 등이 있습니다.

“선형 자료구조에는

배열, 연결리스트, 스택, 큐”

“비선형 자료구조에는

트리, 그래프”

알고리즘은 문제를 해결하기 위한 논리의 집합이예요. 문제 해결 방법으로 분류하면 반복 알고리즘, 재귀 알고리즘, 분할 정복, 동적 프로그래밍, 탐욕 알고리즘 등이 있죠.

“반복 알고리즘, 

재귀 알고리즘,

분할 정복 알고리즘,

동적 알고리즘,

탐욕 알고리즘”

컴퓨터 프로그래밍을 업무로 하는 이들에게 알고리즘과 자료구조는 실질적인 구현에서 필수적으로 필요합니다. 그리고 이들을 다루는 책은 매우 다양하죠.

이론적으로 접근하는 책들은 다양한 알고리즘과 자료구조를 다루지만 실제적인 구현없이 추상적으로 소개하 할 때가 많습니다. 그리고 실질적인 구현도 다루는 책들은 아주 기초적인 알고리즘과 자료구조를 중심으로 다루고 있어요.

이 책에서는 반복 알고리즘, 재귀 알고리즘, 분할 정복 알고리즘, 동적 프로그래밍, 탐욕 알고리즘 등을 소개하고 직접 구현하는 과정을 다룰 것입니다.

특히 자료구조 부분은 자료구조에 관한 설명과 더불어 표준 템플릿 라이브러리(STL, Stand Template Library)에서 제공하는 vector, list, map 등을 모델 삼아 템플릿 형태로 작성할 것입니다. 또한 자료구조를 사용하는 방법도 다룹니다.

“표준 템플릿 라이브러리

(STL, Stand Template Library)

vector, list, map

“STL 사용 방법”

이 책 또한 의사 결정 알고리즘처럼 전문적인 알고리즘을 비롯하여 초보자들이 접근하기 어려운 부분은 다루지 않습니다. 보다 탄탄한 프로그래밍 실력을 다지기 위해 알고리즘과 자료구조를 익히고자 하는 많은 이들에게 도움이 되길 바랄게요.