BioPlayground

🧬
목록으로

자료구조란 — 왜 중요한가

자료구조가 뭔지, 왜 같은 데이터도 저장 방식에 따라 성능이 달라지는지 이해합니다.

입문
|
5
|
검증 완료 (2026-07)
진행률0/6 (0%)

자료구조란 — 왜 중요한가

이 토픽을 마치면

자료구조가 무엇인지 설명할 수 있고, 왜 "데이터를 어떻게 저장하느냐"가 프로그램의 성능을 결정하는지 알게 됩니다.


같은 데이터, 다른 성능

전화번호부를 생각해봅시다. 1000명의 이름과 전화번호가 있습니다.

방법 A: 종이에 순서 없이 적기

  • "김훈"을 찾으려면? → 처음부터 하나씩 확인. 최악의 경우 1000번

방법 B: 가나다순으로 정렬

  • "김훈"을 찾으려면? → 중간을 펼쳐서 비교, 절반씩 좁혀감. 최대 10번이면 찾음

데이터는 똑같습니다. 저장하고 정리하는 방식이 다를 뿐인데, 검색 속도가 100배 차이납니다.

이것이 **자료구조(Data Structure)**의 핵심입니다 — 데이터를 어떤 형태로 조직하느냐에 따라 연산의 효율이 달라집니다.


자료구조의 기본 종류

text
선형 자료구조 (한 줄로 늘어선 것)
├── 배열 (Array)     — 연속된 칸에 순서대로
├── 연결 리스트       — 각 칸이 다음 칸을 가리킴
├── 스택 (Stack)     — 위에서만 넣고 빼기
└── 큐 (Queue)       — 뒤에서 넣고 앞에서 빼기

비선형 자료구조 (가지가 갈라지는 것)
├── 트리 (Tree)      — 계층 구조
├── 그래프 (Graph)   — 자유로운 연결
└── 해시 테이블      — 키로 바로 접근

왜 하나만 쓰면 안 되는가

배열이 만능이면 다른 자료구조는 필요 없겠죠. 하지만 각 구조마다 잘하는 것과 못하는 것이 있습니다.

연산배열연결 리스트해시 테이블
인덱스로 접근빠름느림
검색느림느림빠름
삽입/삭제느림빠름빠름

"이 프로그램은 검색을 많이 하니까 해시 테이블", "순서가 중요하니까 배열" — 상황에 맞는 자료구조를 고르는 것이 프로그래머의 판단입니다.


자료구조 + 알고리즘 = 프로그램

유명한 공식이 있습니다:

프로그램 = 자료구조 + 알고리즘 — 니클라우스 비르트 (Pascal 언어 창시자)

자료구조는 데이터를 담는 그릇이고, 알고리즘은 그 그릇에서 데이터를 처리하는 방법입니다. 좋은 그릇에 좋은 요리법을 쓰면 효율적인 프로그램이 됩니다.


실무에서 왜 중요한가

python
# 리스트에서 검색 — O(n), 데이터가 많으면 느림
users = ["김훈", "이수", "박진", ...] # 100만 명
"김훈" in users # 최악 100만 번 비교
# 딕셔너리(해시 테이블)에서 검색 — O(1), 거의 즉시
users = {"김훈": "010-1234", "이수": "010-5678", ...}
users["김훈"] # 한 번에 찾음

100만 명의 사용자가 있을 때, 자료구조 선택 하나로 100만 번 vs 1번의 차이가 납니다. 이것이 자료구조를 배워야 하는 이유입니다.