자료구조 복습 [TIL 37일차]

장민제·2025년 6월 5일

내일배움캠프

목록 보기
39/41
post-thumbnail

프로그래밍을 잘하고 싶다면, 자료구조는 선택이 아니라 필수
많은 사람들이 List, Dictionary만 쓰면서 그 내부 동작이나 다른 대안 구조를 잘 모르는 경우가 많다.
특히 게임 개발이나 알고리즘 문제 풀이, 실무 최적화에서 자료구조 선택은 성능과 직결된다.

오늘은 주요 자료구조를 간단히 정리하고, 어떤 상황에서 유용하게 쓰일 수 있는지를 다시 복습해보는 시간을 가져보았다.


1. 배열 (Array)

  • 고정된 크기의 연속적인 메모리 공간
  • 빠른 인덱스 접근 (O(1)), 하지만 크기 변경 불가

🎮 활용 예:

  • 맵 타일 데이터 (고정된 크기), 색상 팔레트 등
  • 성능이 중요한 루프에서 단순 배열이 유리할 때 사용

2. 리스트 (List)

  • C#의 동적 배열
  • 내부적으로 크기 자동 조절 → 배열 복사 발생 가능

🎮 활용 예:

  • 인벤토리 아이템 리스트
  • 적군 목록, 퀘스트 목록 등 가변적인 데이터에 적합

3. 연결 리스트 (LinkedList)

  • 노드 간 참조로 구성 (next, prev)
  • 중간 삽입/삭제는 빠르지만 접근은 느림

🎮 활용 예:

  • 순서 변경이 잦은 UI 요소나 이벤트 큐
  • Undo/Redo 기록 관리 (양방향 리스트)

4. 스택 (Stack)

  • 후입선출 (LIFO) 구조
  • Push(), Pop() 으로 데이터를 다룸

🎮 활용 예:

  • 상태머신 처리 (ex: 상태 push & pop)
  • 씬 전환, UI 창 스택, 함수 호출 스택

5. 큐 (Queue), 우선순위 큐

  • 선입선출 (FIFO) 구조
  • Enqueue(), Dequeue() 사용

🎮 활용 예:

  • 몬스터 스폰 큐
  • 네트워크 패킷 처리
  • 유닛 명령 대기열 등

6. 딕셔너리 (Dictionary)

  • 해시 테이블 기반 자료구조
  • 키 → 해시 → 인덱스 → 값 저장
  • 평균 O(1) 접근 속도

🎮 활용 예:

  • 오브젝트 이름 → Prefab 참조
  • 유저 ID → 상태 정보
  • NPC 대사, 스킬 ID → 효과 등

⚠️ 해시 충돌 시 성능 저하 가능성 있음 → 대량 데이터일수록 주의


7. SortedDictionary / SortedList

  • 자동 정렬된 상태로 키 저장
  • 내부적으로 이진 탐색 트리(레드블랙 트리) 사용

🎮 활용 예:

  • 순차적으로 정렬된 데이터를 빠르게 조회하고 싶을 때
  • 랭킹 시스템 (정렬된 유저 점수 목록 등)

8. 트리 (Tree)

  • 계층 구조 표현에 적합
  • 대표적: 이진 탐색 트리, AVL, 레드블랙 트리

🎮 활용 예:

  • 스킬 트리, UI 메뉴 구조
  • 상태 전이 트리 (FSM), 애니메이션 트리

9. 그래프 (Graph)

  • 정점과 간선으로 이루어진 구조
  • DFS / BFS / 다익스트라 / A*

🎮 활용 예:

  • 길찾기 알고리즘 (네비게이션 메시, A*)
  • 소셜 관계망 (플레이어 간 친구 시스템)
  • 스테이지 간 연결 구조

10. 힙 (Heap) → 우선순위 큐

  • 최소값 또는 최대값을 빠르게 찾는 구조
  • 삽입, 삭제 후에도 자동으로 재정렬 유지

🎮 활용 예:

  • AI 우선순위 작업 큐 (위험도 높은 유닛 우선 대응)
  • 경로 탐색 알고리즘 (A*, 다익스트라)
  • 리소스 관리 시스템

🧠 느낀점

  • 자료구조는 단순히 외워서 쓰는 게 아니라, 언제 어떤 상황에서 적합한지를 판단
  • 특히 게임 개발에서는 구조 하나 잘못 고르면 성능 문제나 유지보수 난이도가 크게 달라진다.
  • 앞으로는 알고리즘 문제 풀이뿐만 아니라, 구현 설계 시에도 자료구조를 먼저 고민해야겠다.
profile
Unity, C#

0개의 댓글