자료구조는 데이터를 관리하는 방법이다.
흔히 우리는 프로그래머스나 백준에서 문제의 솔루션을 구현할 때 배열, 큐, 스택 등의 클래스를 활용한다. 하지만 더 큰 관점에서 보면 저 클래스들은 자료구조라고 하는 이론을 기반으로 자바 프레임워크에서 제공하는 클래스이며 오늘은 그 기반인 자료구조를 알아보려고 한다.
그럼 자료구조에서 말하는 자료는 무엇일까? 필자는 개인적으로 기본 자료형이라고 생각한다. 기본 자료형 또한 입력한 값을 가지고 있는 가장 작은 단위의 자료구조라고 볼 수 있지만, 자료구조에서 말하는 자료는 이 기본 자료형들을 일렬로 세워서 순서를 매기거나 하나의 객체가 다른 객체를 가르키는 것 같은 구조로 저장하는 것이라고 생각한다.
대부분의 언어에서 지원하는 공통 기본 자료형은 다음과 같다.

다음으로 자료구조 이론에서 정의하는 대표적인 자료구조들은 다음과 같다.

그런데 왜 데이터를 저장할 때 위와 같이 복잡한 자료구조들을 알고 있어야 할까? 그 이유는 '시간' 때문이다. 예를 들어 가장 간단한 배열로 모든 자료를 관리한다고 가정해보자. 그런데 해당 프로그램은 가장 큰 값을 찾아주는 기능을 수행한다고 했을 때 배열을 탐색해서 가장 큰 값을 찾아 주어야하고 해당 기능을 수행하기 위해서 매 번 탐색을 진행하며 시간을 소비해야한다. 하지만 만약 배열이 아닌 힙으로 구현했을 경우 제일 큰 값을 가져오는데 단 1번의 동작으로 해결 가능하다. 간단한 설명으로는 차이가 와닿지 않을 수 있지만, 만일 관리하는 데이터가 억 단위일 경우에는 같은 동작이지만 시간차가 몇 억배가 나게 되는 것이다.
따라서 현명한 개발자라면 자신이 설계하는 프로그램의 기능에 맞게 자료구조를 활용할 수 있어야하고 향후 위에 언급된 자료구조들을 더 자세히 알아보려 한다.
'컴퓨터 공학 > 자료구조' 카테고리의 다른 글
| 자료구조 - 그래프 (0) | 2023.01.15 |
|---|---|
| 자료구조 - 리스트 (0) | 2023.01.15 |
| 자료구조 - 덱(Deque) (0) | 2023.01.14 |
| 자료구조 - 큐(Queue) (0) | 2023.01.14 |
| 자료구조 - Stack (0) | 2023.01.14 |