잠깐. <강좌에 앞서>라는 쓰기 전에 앞서, 질문 하나를 던지며 시작하겠다.
"알고리즘이란 무엇이며, 자료구조는 무엇인가?"
우선, 네이버 국어사전에 따른 알고리즘(=알고리듬)의 사전적 정의는 다음과 같다.
말 그대로, 어떤 결과를 이끌어내기 위한 일련의 과정이다.
이해가 단번에는 쉽지 않을테니, 다음의 예시를 살펴보자.
필자는 현재 식탁 앞에 서있고, 식탁 위에 놓인 피자를 먹고자 한다.
이때, 피자를 먹는 과정을 순서대로 나타내면
팔을 든다. -> 피자를 집는다. -> 피자를 입으로 가져간다. -> 피자를 먹는다.
정도로 나타낼 수 있으며, 이것을 우리는 피자를 먹는 알고리즘이라 부를 수 있다.
다음, 역시나 네이버 국어사전에 따른 자료 구조의 사전적 정의를 알아보자.
자료 구조의 사전적 정의가 어렵게 느껴질 수 있는데, 축약하여 알고리즘을 실현할 때에 필요한 특정한 자료의 형태라고 생각하자.
앞으로 이 강좌에서는 다음의 순서로 다양한 자료구조와 알고리즘을 알아볼 것이다.
(순서는 필자의 사정상 임의적으로 수정될 수 있으며, 수정 시 별도의 공지글과 함께 이 글의 목차를 수정할 것이다.)
1. 빅오 표기법
2. 연결 리스트
3. 스택
4. 큐
5. 덱
6. 재귀
7. 트리
8. 이진 탐색트리
9. 우선순위 큐
10. 그래프
11. 정렬
12. 탐색
13. 해싱
14. 분할 정복
15. 동적 계획법
16. 그리디 알고리즘
17. 백트래킹
18. AVL 트리
19. 유니온-파인드
20. 레드-블랙 트리
21. 소수 판별
22. 피타고라스 수열
(빨간 색 제목은 자료구조, 파란 색 제목은 알고리즘, 검은 색 제목은 문제 해결 전략이다.)