
자료구조가 무엇인지 정확히 설명하기 어려웠고, 그 정의조차 명확히 알지 못하고 있었다고 생각했습니다.
알고리즘 문제를 풀기에 앞서, 문제 해결에 적절히 사용해야 하는 자료구조의 특징을
하나씩 제대로 공부해보고 싶은 마음이 컸습니다.
그래서 자료구조에는 어떤 종류가 있는지 직접 분류해보고,
각각의 특징을 살펴보며 전체적인 자료구조의 틀을 머릿속에 정립해나가고자 했습니다.
공부를 시작하면서 막연했던 개념들이 점점 구체적으로 다가왔고,
앞으로 문제를 마주할 때 이 지식이 든든한 기반이 될 것이라는 기대감이 생겼습니다.
그렇게 이번 글에서는 자료구조의 각각에 대한 특징을 정리해보았습니다.
자료구조(Data structure)
자료구조는 데이터를 효율적으로 저장·관리·검색하기 위한 구조입니다.
적절한 자료구조를 선택하면 접근, 삽입, 삭제와 같은 연산을 더 빠르고 효율적으로 수행할 수 있습니다.
자료구조는 단순히 데이터를 담는 그릇이 아니라, 데이터와 이를 처리하는 방식을 함께 설계한 구조입니다.
예를 들어, 같은 데이터를 저장하더라도 배열, 연결 리스트, 해시 테이블 중
어떤 구조를 사용하느냐에 따라 검색 속도, 메모리 사용량, 구현 난이도가 크게 달라질 수 있습니다.
효율적인 자료구조 선택은 다음과 같은 이유로 중요합니다.
- 성능 최적화 : 적절한 구조를 사용하면 불필요한 연산을 줄이고 실행 시간을 단축할 수 있습니다.
- 메모리 절약 : 데이터 저장 방식에 따라 메모리 사용량이 크게 차이 납니다.
- 문제 해결 능력 향상 : 자료구조의 특징을 이해하면, 주어진 문제 상황에 가장 적합한 해결책을 선택할 수 있습니다.
자료구조의 분류
자료구조는 데이터를 저장하고 연결하는 방식에 따라 여러 형태로 나눌 수 있습니다.
크게 '단순 구조, 선형 자료 구조, 비선형 자료 구조, 파일 구조'의 네 가지로 구분하며,
특정 목적에 맞게 설계된 기타 자료 구조도 별도로 사용됩니다.
아래의 이미지는 이러한 자료구조의 분류를 한눈에 볼 수 있도록 정리한 것입니다.
이 글에서는 선형 자료 구조와 비선형 자료 구조를 중심으로 살펴볼 예정입니다.

단순 구조 (Simple Structure)
자료구조의 가장 기초가 되는 형태는 단순 구조입니다.
단순 구조는 데이터를 그 자체의 값으로 저장하며, 더 작은 단위로 나누어 구조화하기 어려운 기본 자료형을 의미합니다.
프로그래밍에서 가장 먼저 접하게 되는 데이터의 형태이자,
모든 복합 자료구조(배열, 리스트, 트리 등)를 구성하는 기본 요소로 쓰입니다.
'정수, 실수, 문자, 문자열'과 같은 자료형이 여기에 속하며,
이들은 각각의 값이 독립적으로 존재하고, 다른 값과의 연결 관계나 순서를 포함하지 않습니다.
따라서 단순 구조는 데이터 표현의 출발점이자, 이후 더 복잡한 자료구조를 이해하기 위한 기초가 됩니다.
1) 정수 (Integer)
소수점이 없는 값을 저장하는 수치 데이터 구조
정수는 양수, 음수, 0을 포함하며, 메모리에서 고정된 크기로 저장됩니다.
산술 연산과 비교 연산의 기본 단위이며, 개수, 순서, 인덱스 등 다양한 계산에 사용됩니다.
2) 실수 (Float)
소수점 이하 값을 포함할 수 있는 수치 데이터 구조
실수는 정수보다 더 넓은 범위를 표현할 수 있으며, 부동소수점 방식으로 저장됩니다.
물리량 계산, 좌표 표현, 통계 처리 등 정밀한 계산이 필요한 곳에서 사용됩니다.
3) 문자 (Character)
알파벳, 숫자, 기호 등 한 글자를 저장하는 문자 데이터 구조
문자는 ASCII, Unicode와 같은 문자 집합에 따라 정수 값으로 저장됩니다.
알파벳, 숫자, 특수문자 등 단일 문자 정보를 표현합니다.
4) 문자열 (String)
여러 문자를 순서대로 나열한 문자열 데이터 구조
문자열은 하나의 의미 있는 데이터 단위로 취급되며, 문자의 배열로 구성됩니다.
텍스트 처리, 사용자 입력, 파일 내용 저장 등 광범위하게 활용됩니다.
선형 자료 구조 (Linear Data Structure)
선형 자료 구조는 데이터가 일렬로 나열되어 순서가 존재하는 구조이며,
자료들 사이의 관계가 1:1 관계입니다.
이름 그대로 데이터를 선형(Linear)으로 배치하며, 각 데이터 원소는 앞뒤가 명확히 연결되어 있습니다.
이러한 특성 덕분에 데이터 접근과 순회가 직관적이고, 비교적 구현이 간단합니다.
선형 자료 구조를 이해하는 것은 이후 알고리즘 설계와 비선형 자료 구조 학습의 기초가 됩니다.
특히, 배열(Array)이나 연결 리스트(Linked List)처럼 데이터 저장 방식이 다른 구조를 비교해보는 과정은,
문제 상황에 맞는 자료구조를 선택하는 능력을 키우는 데 큰 도움이 됩니다.
이번 글에서는 선형 자료 구조에 해당하는 '순차 리스트, 연결 리스트, 스택, 큐, 데크' 다섯 가지를 살펴보겠습니다.
이를 통해 각 자료구조의 정의, 특징, 장단점, 활용 예시를 차례로 알아보겠습니다.
1) 순차 리스트 (Linear List)
데이터를 메모리상에 연속적으로 저장하는 선형 자료 구조

위의 이미지를 보면, 순차 리스트의 구성 요소는 아래와 같습니다.
- Value : 실제 저장된 데이터 값
- Index : 각 값의 위치를 나타내는 번호
- Element : 값과 해당 인덱스를 포함한 하나의 구성 단위
메모리 공간이 연속적으로 할당되며, 배열 형태로 구현됩니다.
이로 인해 임의 접근(Random Access)이 가능해 원하는 위치의 데이터에 빠르게 접근할 수 있다는 장점이 있습니다.
그러나 삽입·삭제 시 다른 요소들을 이동시켜야 하므로 데이터 양이 많을 경우 시간 비용이 커질 수 있습니다.
구현 방식에는 크기가 고정된 정적 배열(Static Array)과 필요에 따라 크기를 확장할 수 있는 동적 배열(Dynamic Array)이 있습니다.
이러한 빠른 접근 속도라는 장점 때문에 학생 성적 관리, 이미지 픽셀 데이터 저장, 센서 데이터 기록 등 데이터 변경이 적고 조회가 빈번한 경우에 주로 사용됩니다.
📏 활용 알고리즘
- 이분 탐색(Binary Search) → 정렬된 배열에서 빠른 탐색
- 정렬 알고리즘 구현 → 버블 정렬, 퀵 정렬, 병합 정렬 등
- 슬라이딩 윈도우 → 부분 합, 최대/최소값 계산
2) 연결 리스트(Linked List)
각 요소(노드)가 데이터와 다음 요소의 주소(포인터)를 함께 저장하는 선형 자료 구조

위의 이미지를 보면, 연결 리스트의 구성 요소는 아래와 같습니다.
- Data : 저장하고자 하는 실제 값
- Link : 다음 노드의 주소를 가리키는 포인터
- Head : 첫 번째 노드의 주소를 저장
- Tail : 마지막 노드의 주소를 저장
- 마지막 노드의 Link : NULL 값을 가짐 (연결의 끝을 의미)
메모리상에서 불연속적으로 저장되며, 포인터를 통해 다음 노드와 연결됩니다.
하나의 노드는 데이터(Data)와 링크(Link)로 구성되며, 링크는 다음 노드를 가리키는 포인터 역할을 합니다.
이 포인터는 보통 화살표(→)로 표현되며, 이를 통하여 각 노드가 순차적으로 연결되는 모습을 확인할 수 있습니다.
배열에 비해 포인터의 변경만으로 삽입과 삭제가 가능하여 속도가 빠르다는 장점이 있지만,
임의 접근(Random Access)이 불가능해 특정 위치에 접근하려면 처음부터 순차적으로 탐색해야 합니다.
구현 방식에는 단일 연결 리스트(Singly Linked List), 이중 연결 리스트(Doubly Linked List), 원형 연결 리스트(Circular Linked List)가 있습니다.
이러한 삽입·삭제 속도의 장점을 활용하여 음악 재생 목록, 작업 스케줄러, 그래프 인접 리스트 구현, 메모리 동적 관리 등,
데이터 크기나 구조가 자주 변하는 환경에서 유용합니다.
🔗 활용 알고리즘
- LRU(Least Recently Used) 캐시 구현 → 최근 사용한 항목 관리
- 다항식(Polynomial) 연산 → 항을 노드로 관리
- 큐/스택 구현 → 동적 크기 관리가 필요한 경우
3) 스택(Stack)
데이터를 마지막에 넣은 것이 먼저 나오는 후입선출(LIFO, Last In First Out) 구조의 선형 자료 구조

위의 이미지를 보면, 스택의 구성 요소는 아래와 같습니다.
- Top : 가장 최근에 삽입된 데이터의 위치를 가리킴
- Push 연산 : Top 위에 새로운 데이터를 삽입
- Pop 연산 : Top의 데이터를 꺼내고 Top 위치를 변경
후입선출(LIFO)구조로, 가장 나중에 넣은 데이터가 가장 먼저 나오는 특징이 있습니다.
입출력은 한쪽 (Top)에서만 이루어지며, 데이터 삽입은 Push, 삭제는 Pop 연산으로 처리됩니다.
데이터 접근은 Top에서만 직접 가능하며, 중간 데이터 접근은 불가능합니다.
구현 방식에는 배열 기반 스택(Array Stack)과 연결 리스트 기반 스택(Linked List Stack)이 있습니다.
이러한 간단한 구조와 빠른 접근 속도의 장점을 활용해 함수 호출 관리(콜 스택), 되돌리기(Undo)기능, 웹 브라우저 뒤로 가기, 괄호 짝 맞추기 등, 데이터의 처리 순서가 중요하거나 역순으로 처리해야 하는 상황에서 효과적으로 사용됩니다.
🥞 활용 알고리즘
- 깊이 우선 탐색(DFS) → 그래프/트리 탐색
- 괄호 유효성 검사 → 여는 괄호와 닫는 괄호의 짝 확인
- 백트래킹(Backtracking) → 경로 탐색, 조합/순열 생성
4) 큐(Queue)
데이터를 먼저 넣은 것이 먼저 나오는 선입선출(FIFO, First In First Out) 구조의 선형 자료 구조

위의 이미지를 보면, 큐의 구성 요소는 아래와 같습니다.
- Front : 큐의 가장 앞쪽 데이터 위치를 가리킴 (삭제 위치)
- Rear : 큐의 가장 뒤쪽 데이터 위치를 가리킴 (삽입 위치)
- EnQueue 연산 : Rear 위치에 데이터를 삽입하고 Rear를 한 칸 이동
- DeQueue 연산 : Front 위치의 데이터를 삭제하고 Front를 한 칸 이동
선입선출(FIFO)구조로, 먼저 들어온 데이터가 먼저 처리되는 특징이 있습니다.
데이터 입력은 Rear(뒤)에서, 출력은 Front(앞)에서 이루어지며,
데이터 삽입은 EnQueue, 삭제는 DeQueue 연산을 통해 수행됩니다.
중간 데이터에 직접 접근할 수 없으며, 반드시 순차적으로 처리됩니다.
구현 방식에는 배열 기반 큐(Array Queue), 연결 리스트 기반 큐(Linked List Queue), 원형 큐(Circular Queue), 우선순위 큐(Priority Queue)가 있습니다.
이러한 순차 처리 구조의 단순성을 활용하여 프린터 작업 대기열, 프로세스 스케줄링, 네트워크 패킷 처리, 버퍼 관리처럼 데이터가 들어온 순서대로 처리되어야 하는 환경에서 효과적으로 사용됩니다.
🚶♂️🚶♀️ 활용 알고리즘
- 너비 우선 탐색(BFS) → 그래프와 트리에서 최단 경로, 트리 레벨 탐색
- 작업 스케줄링 → 프로세스 관리, 프린터 대기열 처리
- 토폴로지 정렬 → 방향 그래프에서 순서 결정(위상 정렬)
4) 데크(Deque)
양쪽 끝에서 데이터의 삽입과 삭제가 모두 가능한 선형 자료 구조

위의 이미지를 보면, 데크의 구성 요소는 아래와 같습니다.
- Front : 앞쪽 데이터 위치 (삽입·삭제 가능)
- Rear : 뒤쪽 데이터 위치 (삽입·삭제 가능)
- EnQueue Front/Rear : 해당 방향에서 데이터 삽입
- DeQueue Front/Rear : 해당 방향에서 데이터 삭제
스택처럼 후입선출(LIFO), 큐처럼 선입선출(FIFO) 동작을 모두 구현할 수 있습니다.
스택과 큐의 장점을 모두 가지고 있으며, Front(앞)와 Rear(뒤) 양쪽에서 자유롭게 입출력이 가능합니다.
데이터 삽입은 EnQueue, 삭제는 DeQueue 연산을 통해 수행되며,
상황에 따라 스택, 큐, 우선순위 큐처럼 변형하여 사용할 수도 있습니다.
구현 방식에는 배열 기반 데크(Array Deque), 연결 리스트 기반 데크(Linked List Deque), 원형 데크(Circular Deque)가 있습니다.
이러한 양방향 입출력과 유연한 동작 방식을 활용해 캐시(Cache) 구현, 슬라이딩 윈도우, 양방향 탐색 등, 한쪽 또는 양쪽 방향에서 모두 데이터를 처리해야 하는 환경에서 효과적으로 사용됩니다.
↔️ 활용 알고리즘
- 슬라이딩 윈도우 최적화 → 최대/최소값, 이동 평균
- 0-1 BFS → 가중치가 0 또는 1인 그래프 최단 경로
- 양방향 회전(Rotate) → 큐 요소 재배치
비선형 자료 구조(Non-linear Data Structure)
비선형 자료 구조는 데이터가 계층적이거나 관계망 형태로 연결된 구조이며,
자료들 사이의 관계가 1:다, 또는 다:다 관계입니다.
이름 그대로 데이터 원소들이 일렬이 아닌, 여러 경로와 연결 관계를 가질 수 있으며,
하나의 데이터가 둘 이상의 데이터와 직접 연결될 수 있습니다.
이러한 특성 덕분에 복잡한 데이터 관계를 효율적으로 표현할 수 있습니다.
데이터 간 위계 관계(계층)나 상호 연결성이 중요한 문제에서 사용되며,
비선형 자료 구조를 이해하는 것은 네트워크 분석, 경로 탐색 알고리즘, 계층형 데이터 처리와 같은 다양한 응용 분야에서 핵심적인 기반이 됩니다.
이번 글에서는 비선형 자료 구조에 해당하는 '트리, 그래프' 두 가지를 살펴보겠습니다.
이를 통해 각 구조의 정의, 특징, 장단점, 활용 예시를 차례로 알아보겠습니다.
1) 트리(Tree)
계층적(Parent-Child) 관계를 표현하는 비선형 자료 구조

위의 이미지를 보면, 트리의 구성 요소는 아래와 같습니다.
- Node : 데이터와 하위 노드 연결 정보를 포함하는 트리의 기본 단위
- Edge : 노드와 노드를 연결하는 선
- Root Node : 트리의 시작점이 되는 최상위 노드
- Parent Node : 한 개 이상의 자식 노드를 가진 노드
- Child Node : 부모 노드로부터 연결된 하위 노드
- Leaf Node : 자식 노드가 없는 말단 노드
트리는 루트 노드(Root Node)에서 시작하여 여러 개의 자식 노드로 뻗어 나가며 계층 구조를 형성합니다.
각 노드는 0개 이상의 자식 노드를 가질 수 있습니다.
구현 방식에는 일반 트리(General Tree), 이진 트리(Binary Tree)가 있으며,
이진 트리의 일종으로 완전 이진 트리 형태를 가지면서 우선순위 큐 등에서 사용되는 힙(Heap) 자료구조도 존재합니다.
계층 구조 표현에 적합하여 폴더·파일 구조, 조직도, 게임 의사결정 트리, 데이터베이스 인덱스 구조(B-Tree, B+Tree) 등,
상·하위 관계를 명확하게 나타내야 하는 환경에서 효과적으로 사용됩니다.
🌳 활용 알고리즘
- 트리 순회 → 전위 순회(Preorder), 중위 순회(Inorder), 후위 순회(Postorder), 레벨 순회(Level-order)
- 이진 탐색 트리(BST) 연산 → 삽입, 삭제, 탐색
- 힙(Heap) 연산 → 최대 힙/최소 힙 기반 삽입·삭제
2) 그래프(Graph)
정점(Vertex)과 간선(Edge)으로 연결 관계를 표현하는 비선형 자료 구조

위의 이미지를 보면, 그래프의 구성 요소는 아래와 같습니다.
- Vertex(정점): 데이터를 저장하는 기본 단위, 네트워크의 노드에 해당
- Edge(간선): 두 정점을 연결하는 선
그래프는 정점(Vertex)들이 간선(Edge)으로 연결되어 있으며,
간선에 방향이 있으면 방향 그래프(Directed Graph), 없으면 무방향 그래프(Undirected Graph)로 구분됩니다.
또한, 간선에 가중치(Weight)를 부여하여 거리, 비용, 시간 등을 표현할 수도 있습니다.
그래프에는 시작 정점과 끝 정점이 동일한 경로인 순환(Cycle)이 존재할 수도 있으며,
모든 정점이 연결되지 않는 비연결 그래프 형태일 수도 있습니다.
이처럼 방향 여부나 가중치에 따라 다양한 형태로 표현될 수 있습니다.
구현 방식에는 인접 행렬(Adjacency Matrix), 인접 리스트(Adjacency List)가 있습니다.
복잡한 연결 관계를 표현하는 데 적합하여 SNS 관계망 분석, 지도 경로 탐색, 네트워크 토폴로지 관리, 추천 시스템, 웹 페이지 링크 분석(PageRank) 등, 다양한 분야에서 효과적으로 사용됩니다.
🕸 활용 알고리즘
- 최단 경로 탐색 → 다익스트라(Dijkstra), 벨만–포드(Bellman–Ford), 플로이드–워셜(Floyd–Warshall)
- 그래프 탐색 → BFS(너비 우선 탐색), DFS(깊이 우선 탐색)
- 최소 신장 트리 → 크루스칼(Kruskal), 프림(Prim)
기타 자료 구조 (Special-purpose Data Structure)
기타 자료 구조는 전통적인 선형·비선형 분류에 속하지 않지만,
문제 해결에서 특정 목적에 맞게 고안된 구조입니다.
이러한 자료구조는 특정 연산을 매우 효율적으로 수행하거나,
일반적인 자료구조로는 구현이 복잡한 기능을 간단하게 처리할 수 있도록 설계되었습니다.
이번 글에서는 기타 자료 구조의 대표적인 예로 '해시 테이블'을 함께 살펴보겠습니다.
이를 통해 전통적인 분류 외의 자료구조가 어떤 문제에서 효과적인지 이해할 수 있을 것입니다.
해시 테이블(Hash Table)
키(Key)를 해시 함수(Hash Function)로 변환하여 값(Value)을 저장·검색하는 연관 배열 기반 자료 구조

위의 이미지를 보면, 해시 테이블의 구성 요소는 아래와 같습니다.
- Key: 고유 식별자
- Value: 키에 매핑되는 실제 데이터
- Hash Function: 키를 해시 값으로 변환하는 함수
- Hash Value(해시값): 해시 함수의 결과로 얻은 고정 길이 숫자
- Index: 해시값을 버킷 개수로 나눈 나머지로 결정되는 위치
- Bucket: (Key, Value) 쌍을 저장하는 공간
- Hash Table : 해시 함수를 이용해 계산된 인덱스 위치에 (Key, Value) 쌍을 저장하는 버킷들의 집합
핵심 아이디어는 키(Key)를 해시 함수(Hash Function)를 통해 고정 길이의 숫자(Hash Value, 해시값)로 변환하고,
그 값을 버킷(Bucket)이라 불리는 저장소에 효율적으로 배치하는 것으로 동작합니다.
⚙️동작 과정
- Key 입력
- 예 : P, S, Q, R
- 해시 함수 적용 → 각 Key를 해시 함수에 넣어 해시값으로 변환
- 예 : P → 80, S → 83, Q → 81, R → 82
- 버킷 인덱스 계산 → 해시값 % 버킷 개수
- 예 : 80 % 10 = 0, 83 % 10 = 3, 81 % 10 = 1, 82 % 10 = 2
- 버킷에 저장 → 계산된 인덱스 위치의 버킷에 (Key, Value) 쌍을 저장
- 예 : 인덱스 0에 (P, vP), 인덱스 3에 (S, vS) 저장
해시 테이블은 해시 함수 + 나머지 연산 + 버킷 구조를 결합하여
데이터를 빠르게 찾을 수 있도록 설계되었으며, 평균적으로 검색 속도 O(1)을 제공합니다.
다만, 해시 충돌(Collision)이 발생할 수 있으며, 이를 처리하기 위해 개별 체이닝(Separate Chaining)이나 개별 주소법(Open Addressing) 등을 사용합니다.
빠른 데이터 검색과 매핑 기능을 활용해야하는 환경에서 효과적입니다.
예를 들어 데이터베이스 인덱스, 캐시(Cache) 구현, 사전(Dictionary) 구조, 중복 검사, 사용자 세션 관리 등
대량의 데이터를 빠르게 조회하고 관리해야 하는 시스템에서 널리 사용됩니다.
🗂️ 활용 알고리즘
- 빈도 수 계산(Frequency Counting) → 배열·문자열 원소의 등장 횟수 계산
- 중복 여부 판별(Duplicate Detection) → 집합(Set) 구조로 중복 검사
- 빠른 키-값 조회(Fast Lookup) → 키를 통한 값 검색, 매핑 데이터 관리
파일 구조 (File Structure)
파일 구조는 데이터를 저장 장치에 조직적으로 배치하여,
필요한 정보를 효율적으로 저장·검색·수정할 수 있도록 설계된 구조입니다.
전통적인 메모리 내 자료구조(배열, 트리 등)와 달리,
파일 구조는 디스크나 SSD와 같은 비휘발성 저장 매체에 데이터를 다루는 방식을 중점적으로 다룹니다.
이러한 구조는 데이터 접근 속도를 높이고, 저장 공간을 효율적으로 활용하며,
대용량 데이터를 안정적으로 관리하는 데 목적이 있습니다.
이번 글에서는 대표적인 파일 구조에 해당하는 '순차 파일, 색인 파일, 직접 파일'을 함께 살펴보겠습니다.
1) 순차 파일 (Sequential File)
데이터를 저장 순서대로 나열하고 순차적으로 접근하는 파일 구조
레코드가 저장 순서대로 배열되어 있어, 읽기·쓰기 작업이 순차적으로 이루어집니다.
데이터 접근은 처음부터 차례대로 진행되기 때문에 검색 속도는 느리지만,
대량의 데이터를 한 번에 처리하는 일괄 처리에는 효율적입니다.
2) 색인 파일 (Indexed File)
데이터에 대한 색인(index)를 별도로 두어 검색 속도를 높인 파일 구조
실제 데이터 위치를 나타내는 색인 테이블을 사용하여 원하는 데이터를 빠르게 찾습니다.
색인 테이블을 먼저 검색한 뒤, 해당 주소로 직접 접근하므로 검색 속도가 빠릅니다.
데이터 양이 많고 검색이 잦은 환경에서 유용합니다.
3) 직접 파일 (Direct File)
해시 함수 등을 이용해 데이터의 저장 위치를 직접 계산하는 파일 구조
키 값에 해시 함수를 적용해 레코드의 물리적 위치를 즉시 결정합니다.
평균적으로 매우 빠른 조회가 가능하며, 색인 테이블조차 필요 없는 경우가 많습니다.
빠른 조회가 중요한 환경에서 사용되지만, 해시 충돌 처리 방법이 필요할 수 있습니다.
되돌아보며
처음에는 자료구조를 단순히 데이터를 저장하는 방법 정도로만 생각했지만,
공부를 하면서 프로그램의 성능과 효율성에 큰 영향을 미치는 핵심 요소임을 알게 되었습니다.
선형 구조와 비선형 구조의 특징과 장단점을 배우면서,
알고리즘 문제를 풀 때 어떤 자료구조를 선택해야 할지에 대해 생각하는 것이 중요하다는 것을 깨달았습니다.
특히 앞으로는 문제의 연산 패턴을 분석해 가장 효율적인 자료구조를 고르는 과정을 직접 적용해 보며 경험을 쌓아가고 싶습니다.
이번 학습을 통해 자료구조가 단순한 이론이 아니라 실무와 문제 해결의 중요한 도구임을 깨달았고,
앞으로도 이러한 이해를 바탕으로 효율적인 자료구조 선택을 자연스럽게 실천하고 싶습니다.
이 글이 자료구조를 공부하는 다른 분들에게도 올바른 선택과 활용에 도움이 되었으면 좋겠습니다.☺️
