본문 바로가기

[100일의 IT 초보 탈출] #20 데이터를 담는 그릇, 자료구조의 세계 🧱

@Prof.SSong2025. 3. 19. 16:03
728x90
반응형

안녕하세요!

IT 초보 탈출 20일차를 맞이한 블로그입니다! 🌱

지난 시간에는 알고리즘의 효율성을 측정하는 방법에 대해 알아봤는데요.

오늘은 데이터를 효율적으로 저장하고 관리하는 '자료구조'에 대해 알아볼게요! 😊

💡 자료구조란 무엇인가요?

자료구조는 데이터를 효율적으로 저장하고, 조직하고, 관리하는 방법이에요.

마치 주방에서 식재료를 보관하는 다양한 용기들과 같죠.

음식의 종류와 목적에 따라 냉장고, 서랍, 항아리 등 다른 용기를 사용하듯이,

데이터도 그 특성과 목적에 맞는 자료구조에 담아야 효율적으로 활용할 수 있어요.

자료구조가 중요한 이유

  1. 효율성: 적절한 자료구조를 선택하면 데이터 처리 속도가 빨라져요
  2. 메모리 관리: 데이터 특성에 맞는 자료구조를 사용하면 메모리를 절약할 수 있어요
  3. 코드 가독성: 상황에 맞는 자료구조를 사용하면 코드가 더 명확해져요

 

🧱 주요 자료구조 살펴보기

1. 배열 (Array)

가장 기본적인 자료구조로, 같은 타입의 데이터를 연속된 메모리 공간에 저장해요.

 

실생활 예시: 달걀 케이스

  • 동일한 크기의 칸이 일렬로 나열되어 있어요
  • 각 칸에 달걀(데이터)을 넣을 수 있어요
  • 3번째 칸의 달걀이 필요하면 바로 꺼낼 수 있어요

 

특징

  • 장점: 인덱스로 빠르게 접근 가능 (O(1))
  • 단점: 크기 변경이 어려움, 중간에 삽입/삭제가 비효율적
  • 활용: 정렬된 데이터, 빠른 접근이 필요한 경우

 

2. 연결 리스트 (Linked List)

 

각 노드가 데이터와 포인터를 가지고 한 줄로 연결된 자료구조에요.

 

실생활 예시: 보물찾기 게임

  • 각 장소에 다음 장소로 가는 힌트(포인터)가 있어요
  • 처음부터 순서대로 따라가야만 모든 장소를 방문할 수 있어요

 

특징

  • 장점: 삽입/삭제가 쉬움, 크기 제한이 없음
  • 단점: 특정 위치 접근이 느림 (O(n)), 추가 메모리 필요
  • 활용: 데이터의 삽입/삭제가 빈번한 경우

 

3. 스택 (Stack)

 

데이터를 쌓아올리는 형태의 자료구조로, LIFO(Last-In-First-Out) 방식으로 동작해요.

 

실생활 예시: 접시 쌓기

  • 접시를 위에서부터 쌓아요
  • 가장 나중에 쌓은 접시부터 꺼내야 해요
  • 중간에 있는 접시를 꺼내려면 위의 접시들을 모두 치워야 해요

 

특징

  • 장점: 삽입/삭제가 빠름 (O(1)), 구현이 간단함
  • 단점: 중간 데이터에 접근 불가
  • 활용: 함수 호출 관리, 실행 취소(Undo), 괄호 검사

 

4. 큐 (Queue)

한쪽 끝에서 삽입, 다른 쪽 끝에서 삭제가 이루어지는 FIFO(First-In-First-Out) 방식의 자료구조에요.

 

실생활 예시: 은행 대기줄

  • 줄의 끝에서 새로운 사람이 대기해요
  • 줄의 앞에서부터 차례대로 업무를 봐요
  • 중간에 새치기는 안돼요!

 

특징

  • 장점: 삽입/삭제가 빠름 (O(1)), 순서 보장
  • 단점: 중간 데이터에 접근 불가
  • 활용: 작업 대기열, 버퍼, 너비 우선 탐색(BFS)

 

5. 트리 (Tree)

 

계층적 관계를 표현하는 비선형 자료구조로, 노드와 간선으로 구성돼요.

 

실생활 예시: 가족 족보

  • 조상에서 시작해 자손으로 이어지는 계층 구조
  • 한 사람(노드)은 여러 자식을 가질 수 있어요
  • 모든 사람은 하나의 부모만 가져요 (루트 제외)

 

특징

  • 장점: 계층 구조 표현에 적합, 검색 효율성 (균형 트리의 경우)
  • 단점: 구현이 복잡함
  • 활용: 파일 시스템, 의사 결정, 데이터베이스 인덱싱

 

이진 탐색 트리 (Binary Search Tree)

특별한 형태의 트리로, 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큰 값을 가져요.

정렬된 데이터 검색에 매우 효율적이에요. (O(log n))

 

6. 그래프 (Graph)

노드와 그 노드를 연결하는 간선으로 구성된 자료구조로, 네트워크 형태의 관계를 표현해요.

 

실생활 예시: 도로망

  • 각 도시는 노드, 도로는 간선으로 표현
  • 도시는 여러 다른 도시와 연결될 수 있어요
  • 일방통행도로(방향 그래프)와 양방향도로(무방향 그래프)가 있어요

 

특징

  • 장점: 복잡한 관계 표현 가능
  • 단점: 구현과 탐색이 복잡함
  • 활용: 소셜 네트워크, 지도 앱, 추천 시스템

 

7. 해시 테이블 (Hash Table)

키(Key)와 값(Value)을 매핑하는 자료구조로, 해시 함수를 사용해 데이터를 저장해요.

 

실생활 예시: 도서관 책 분류

  • 책마다 고유한 분류번호(키)가 있어요
  • 분류번호를 통해 책(값)의 위치를 바로 찾을 수 있어요
  • 같은 분류번호를 가진 책들은 같은 위치에 모아둬요

 

특징

  • 장점: 매우 빠른 검색, 삽입, 삭제 (평균 O(1))
  • 단점: 해시 충돌 발생 가능, 순서 보장 안됨
  • 활용: 데이터베이스 인덱싱, 캐싱, 사전(Dictionary)

🔍 자료구조 선택 가이드

상황에 맞는 자료구조를 선택하는 방법입니다

 

빠른 접근이 필요할 때

 

인덱스로 접근: 배열

키로 접근: 해시 테이블

 

데이터 삽입/삭제가 빈번할 때

 

배열 끝: 배열

중간 위치: 연결 리스트

항상 맨 앞/뒤: 스택/큐

 

데이터 정렬이 중요할 때

 

정렬된 리스트: 배열

동적 정렬: 이진 탐색 트리

 

계층 구조가 필요할 때

 

단순 계층: 트리

복잡한 관계: 그래프

 

✍️ 오늘의 IT 초보 탈출 한 줄 정리

"자료구조는 데이터를 담는 그릇! 데이터의 특성과 작업 유형에 맞는 자료구조를 선택하면 프로그램의 효율성이 크게 향상돼요!"

 

 

여러분의 IT 초보 탈출을 응원합니다! 🎉

궁금한 점이 있다면 댓글로 남겨주세요~

728x90
반응형
목차