코딩 테스트를 준비하기 전에 자료구조부터 제대로 정리하고 싶어 자료구조 부터 알고리즘 까지 공부하는 과정을 블로그에 기록하기로 했다! 그냥 외우는 것이 아니라 왜 이런 구조가 존재하는지, 언제 써야 하는지, 직접 코드로 구현하면서 공부하기로 결심했다. 그래서 미래에 나를 위한 레퍼런스이니까 한번 잘 정리해보려고 한다.
자료구조란 무엇인가?
위키백과 정의를 보면 이렇게 나온다.
자료구조는 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.
더 정확히는, 데이터 값의 모임, 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 뜻한다.
쉽게 말하면 이렇다. 데이터를 어떤 모양으로, 어떤 규칙으로 담느냐가 자료구조이다.
프론트엔드 개발을 하면서 이미 자료구조를 쭉 써왔다. 눈치채지 못했을 뿐이다..
예를들어 프론트엔드 언어로 바꿔서 생각해보면 이렇다.
// 우리가 매일 쓰는 이것들이 이미 자료구조다
const arr = [1, 2, 3]; // Array (배열)
const obj = { name: "kim" }; // Hash Table (해시 테이블)
const map = new Map(); // Hash Table
const set = new Set(); // Set
// DOM 트리도 자료구조다
// <div>
// <ul>
// <li>1</li> ← 이게 Tree 구조
// </ul>
// </div>
따라서 자료구조는 "데이터를 어떤 형태로 담느냐" 에 대한 선택이다. 어떤 그릇을 고르냐에 따라 같은 데이터도 처리 속도가 달라진다.
왜 자료구조 선택이 중요할까?
같은 데이터를 다루더라도 어떤 자료구조를 쓰느냐에 따라 속도가 수십 배 달라진다. 예를 들어 1만 개의 데이터에서 특정 값을 찾을 때, 배열은 최악의 경우 1만 번 확인해야 하지만 해시 테이블은 거의 1번 만에 찾는다.
결국 자료구조를 이해한다는 건, 상황에 맞는 도구를 고를 수 있는 눈을 갖게 되는 것이다.
자료구조 전체 지도 한눈에 보기
위키백과 분류를 기준으로 자료구조는 크게 4가지로 나뉜다. 단순 -> 선형 -> 비선형 순서로 복잡도가 올라간다.

단순 구조
가장 위에 있는 단순구조는 이름 처럼 단순하다. 하나의 값, 그 자체가 데이터이다.
배열처럼 여러 값을 담거나, 트리처럼 값들 사이에 관계가 생기는 게 아니라 그냥 42, "hello", true 하나가 전부이다.
중요한건 이게 기초라는 것이다! 앞으로 배울 모든 복잡한 자료구조들은 결국 이 단순한 값들을 어떻게 담고 연결하느냐의 문제이다.
1) 정수 (Integer)
가장 익숙한 형태이다. 양수, 음수, 0을 포함하며 1, -5, 100 같이 소수점 없이 딱 떨어지는 수이다.
인덱스, 카운터, 반복 횟수 등 셀 수 있는 모든 곳에 사용된다.
2) 실수 (Float)
3.14, 0.5처럼 소수점이 필요한 순간 등장한다. 내부적으로는 부동소수점 방식으로 저장되기 때문에, 정밀도에 한계가 있다는 점이 정수와 다르다. 0.1 + 0.2 === 0.3이 false가 나오는 것도 이 때문이다.
3) 문자 (Character)
'A', '3', '!' 같은 글자 하나를 저장합니다. 컴퓨터 내부에서는 문자를 그대로 저장하지 않고 ASCII나 Unicode 기준의 숫자로 변환해서 저장한다. 즉 'A'는 사실 65이다.
4) 문자열 (String)
문자를 여러 개 이어 붙인 것이다.. 엄밀히는 문자의 배열이지만, 대부분의 언어에서 하나의 독립된 자료형으로 취급한다. JavaScript에서 매일 쓰는 "안녕하세요" 가 바로 문자열이다.
선형구조
선형 구조는 데이터가 일렬로 나열되는 구조다. 비열과 연결리스트가 기반이 되고 스택과 큐는 이 기반 위에 규칙을 씌운 것이다.
비선형 구조
데이터 사이에 계층 관계나 연결 관계가 생긴다. DOM 트리가 이와 같다.
선형 구조와 비선형 구조는 이번 글에서 자세히 다루지 않는다. 각각 다음 글에서 직접 구현 코드와 함께 하나씩 깊게 파고들 예정이다.
이번 글에서 정리한 내용을 한 줄로 요약하면 이렇다.
자료구조는 데이터를 담는 그릇이고, 단순 구조는 그 그릇을 만드는 가장 작은 재료다.
앞으로 배울 모든 자료구조는 오늘 정리한 글 이후로 계속 정리될 예정이다.
선형 구조 부터 시작해서 비선형 구조까지, 각 구조가 왜 존재하는지, 언제 써야하는지를 직접 코드로 구현하면서 기록해나갈 예정이다.
참고
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0
https://suhyun113.tistory.com/9
'공부 > 알고리즘' 카테고리의 다른 글
| Big O 표기법 과 알고리즘 성능 평가 이해하기 (0) | 2026.02.18 |
|---|