자료구조가 왜 필요하나요?
-데이터가 몇 개 없으면 아무렇게나 저장해도 돼. 하지만 데이터가 많아지면 문제가 생김
-예를 들어
- 맨 뒤에 추가는 쉬운데 찾기가 느릴 수도 있고
- 찾기는 빠른데 중간 삽입이 어려울 수도 있고
- 순서대로 처리해야 하는 경우도 있고
- 부모-자식 관계처럼 연결해서 표현해야 할 때도 있음
따라서, 상황에 맞는 자료구조를 써야한다. 즉, 자료구조 = 데이터를 효율적으로 저장하고 다루기 위한 구조
***배열/리스트***
줄 세워 놓은 칸
예: [ 10, 20, 30, 40 ]
몇 번째 있는지 바로 찾기 쉬움
중간에 끼워 넣거나 빼는 건 번거로울 수 있음
비유 :
아파트 호수처럼 번호가 붙어 있는 칸
***스택***
마지막에 넣은 걸 먼저 꺼내는 구조
예: 접시 쌓기
접시를 위에 올림
꺼낼 때도 위에서부터 꺼냄
이걸 **LIFO ( Last In, First Out)**라고 함, 나중에 들어간게 먼저 나옴
***큐***
먼저 들어온 걸 먼저 꺼내는 구조
예: 은행 줄서기
먼저 온 사람이 먼저 처리됨
이걸 **FIFO(First In, First Out)**라고 함
***트리***
가지처럼 뻗어 나가는 구조
예: 폴더 구조
최상위 폴더
하위 폴더
그 아래 파일들
부모-자식 관계를 표현하기 좋음
***그래프***
점과 선으로 연결된 구조
예: 지도, 자히철 노선, 사람 관계망
A와 B가 연결
B와 C가 연결
A와 D도 연결
관계 표현에 강함
그래서 핵심은 모양보다는 용도이다.
자료구조는 데이터 저장 방식이고, 각 방식마다 잘하는 일이 다르다.
예시
순서대로 저장 → 배열/리스트
뒤로 가기 기능 → 스택
작업 대기열 → 큐
폴더 구조 → 트리
길 찾기, 연결 관계 → 그래프
한 줄 로 정리하면, 자료구조는 데이터를 잘 저장하고, 빨리 찾고, 편하게 꺼내 쓰기 위한 정리 방법이다.
'Python > 자료구조' 카테고리의 다른 글
| 해시 테이블 - 선형 조사(Linear prob) (0) | 2026.04.08 |
|---|---|
| 연결 리스트 - 환형 연결 리스트(Circular Linked List) (0) | 2026.04.08 |
| 연결 리스트 - 한방향 연결 리스트(Singly Linked List) (0) | 2026.04.08 |
| Queue를 이용한 Josephus Problem구현 (0) | 2026.04.08 |
| stack을 이용한 계산기 만들기 (0) | 2026.04.02 |