
자료구조와 알고리즘 공부를 시작할 때 가장 먼저 마주치는 고민은 바로 “어떤 언어로 연습할 것인가?” 이다.로드맵의 첫 챕터도 그 이야기를 하고 있다.

프로그래밍 언어는 다양하지만, 어떤 언어를 배우든 프로그래밍의 기본기는 동일하다. 이 글에서는 Roadmap.sh의 Data Structures and Algorithms 로드맵 중 “Programming Fundamentals” 섹션을 따라간다.

프로그래밍을 하다 보면 데이터를 저장하고 처리하는 일이 정말 많다. 이때 단순히 변수를 여러 개 선언해서 쓰는 방식으로는 복잡한 문제를 해결할 수 없다. 그래서 등장한 것이 바로 자료구조(Data Structures)다.

알고리즘 복잡도(Algorithmic Complexity)는 문제를 해결하기 위해 알고리즘이 필요로 하는 컴퓨팅 자원을 수학적으로 표현한 것이다.

정렬 알고리즘은 주어진 배열이나 리스트의 원소들을 비교 연산자에 따라 재배열하는 데 사용된다. 비교 연산자는 데이터 구조 내에서 원소의 새로운 순서를 결정한다.

데이터 집합에서 원하는 값을 빠르고 정확하게 찾는 방법을 다룬다. 이 글에서는 선형 탐색(Linear Search) 과 이진 탐색(Binary Search) 의 개념, 시간 복잡도, 파이썬 구현, 그리고 실전에서의 선택 기준을 정리한다.

트리(Tree) 는 노드(node)와 간선(edge)으로 이루어진 비선형, 계층적 자료구조다. 트리는 부모-자식 관계를 기반으로 하며, 최상단 노드를 루트(root), 자식이 없는 노드를 리프(leaf) 라고 한다.

그래프(Graph)는 정점(vertex, node)과 간선(edge)으로 구성된 비선형 자료구조다. 간선은 두 정점을 연결하며, 네트워크와 같은 관계 구조를 표현할 수 있다.

고급 자료구조는 효율적인 데이터 저장과 검색을 가능하게 하며, 알고리즘 설계의 핵심이 된다. 이 글에서는 대표적인 고급 자료구조들을 정리하고, 간단한 파이썬 예제를 통해 동작 원리를 살펴본다.

이번 글에서는 Data Structures & Algorithms 로드맵의 Complex Data Structures 파트를 정리한다.