20강 / 20강

자료구조 고르는 법 — 문제에 맞는 그릇

20강의 마무리, 그리고 여러분이 만들 것

자료구조 고르는 법 — 문제에 맞는 그릇
완벽한 자료구조는 없습니다. 이 문제에 맞는 자료구조가 있을 뿐.

19강까지 오면서 계속 반복된 말이 있습니다 — "무엇을 자주 하느냐에 달렸다". 이제 그 판단을 체계적으로 하는 법을 정리합니다.

자료구조를 고를 때 던져야 할 질문은 딱 다섯 개입니다.

1️⃣
순서가 중요한가?
몇 번째인지가 의미가 있나
2️⃣
무엇을 자주 하나?
찾기 · 넣기 · 빼기 중
3️⃣
어디서 넣고 빼나?
앞 · 뒤 · 중간 · 아무데나
4️⃣
중복을 허용하나?
같은 값이 여럿 있어도 되나
5️⃣
얼마나 큰가?
100개인가 1억 개인가

🎮 자료구조 고르기 도우미

조건을 체크하면 알맞은 자료구조와 그 이유를 알려 줍니다. 아래에 있는 실전 문제 10개도 풀어 보세요.

자료구조 고르기 — 조건에 맞는 그릇을 추천받고 실전 문제를 풉니다
불러오는 중…

한눈에 보는 선택 지도

이런 상황이면이걸 쓰세요왜
순서대로 쌓고 순서대로 읽는다리스트인덱스 접근 O(1), 가장 단순
절대 바뀌면 안 된다 / 열쇠로 쓴다튜플불변이라 안전하고 해시 가능
"있나 없나"만 자주 묻는다 / 중복 제거집합포함 검사 O(1)
이름으로 값을 찾는다딕셔너리열쇠 조회 O(1)
마지막 것부터 되돌린다스택 (리스트)LIFO — 실행 취소, 되짚기
먼저 온 것부터 처리한다dequeFIFO — 앞뒤 모두 O(1)
가장 급한 것부터 처리한다힙 (heapq)최솟값 꺼내기 O(log n)
정렬된 순서 + 범위 검색이 필요하다이진 탐색 트리 / 정렬 리스트 + bisect해시는 범위를 못 다룸
계층 구조다 (폴더, 조직도)트리부모-자식 관계를 그대로
임의의 관계다 (친구, 도로)그래프 (인접 리스트)아무 점끼리 이을 수 있음
Counter — 딕셔너리 + 세기. 실전에서 정말 자주 씁니다.
Python 브라우저에서 실행
deque 의 maxlen — 이런 옵션을 아는 것도 자료구조 공부입니다.
Python 브라우저에서 실행
20강의 결론을 숫자로. 그릇 선택이 곧 성능입니다.
Python 브라우저에서 실행

여러분이 배운 것

1부 — 그릇의 기본형
변수 하나에서 시작해 리스트·튜플·집합·딕셔너리로 값을 담는 법을 배웠고, 스택과 큐로 꺼내는 규칙이 자료구조를 만든다는 걸 봤습니다. 연결 리스트에서 화살표라는 발상을, 재귀에서 스택이 숨어 있다는 사실을, 트리에서 계층을 담는 법을 익혔습니다.

2부 — 문제를 푸는 도구
힙으로 우선순위를, 해시로 즉시 찾기를, 그래프로 관계를 표현했습니다. BFS와 DFS는 큐냐 스택이냐라는 한 글자 차이였고, 탐색과 정렬은 같은 결과에 이르는 여러 길을 보여 줬습니다. 그리고 미로 하나에 그 모든 게 들어간다는 것도 확인했죠.

3부 — 판단의 기준
Big-O로 빠르기를 말하는 법을 배웠고, 마지막으로 완벽한 자료구조는 없고 문제에 맞는 자료구조가 있을 뿐이라는 결론에 닿았습니다.

이제 여러분에게 필요한 건 강의가 아니라 만들고 싶은 것 하나입니다. 동아리 회원 관리든, 급식 추천기든, 간단한 게임이든 좋습니다. 만들다 보면 반드시 이런 순간이 옵니다 — "이거 느린데, 그릇을 바꿔 볼까?"
그 순간이 오면, 이 20강이 여러분 안에서 작동하기 시작한 겁니다. 🎉

🤔 확인 문제
"회원 아이디로 회원 정보를 즉시 찾고 싶다" — 알맞은 자료구조는?
🤔 확인 문제
"작업이 계속 들어오는데 급한 것부터 처리해야 한다" — 알맞은 것은?
🤔 확인 문제
"점수가 80~90점인 학생을 자주 조회한다" — 해시(딕셔너리)를 쓰면 안 되는 이유는?
🤔 확인 문제
자료구조를 고를 때 가장 먼저 생각해야 할 것은?