안녕하세요!
IT 초보 탈출 20일차를 맞이한 블로그입니다! 🌱
지난 시간에는 알고리즘의 효율성을 측정하는 방법에 대해 알아봤는데요.
오늘은 데이터를 효율적으로 저장하고 관리하는 '자료구조'에 대해 알아볼게요! 😊
💡 자료구조란 무엇인가요?
자료구조는 데이터를 효율적으로 저장하고, 조직하고, 관리하는 방법이에요.
마치 주방에서 식재료를 보관하는 다양한 용기들과 같죠.
음식의 종류와 목적에 따라 냉장고, 서랍, 항아리 등 다른 용기를 사용하듯이,
데이터도 그 특성과 목적에 맞는 자료구조에 담아야 효율적으로 활용할 수 있어요.
자료구조가 중요한 이유
- 효율성: 적절한 자료구조를 선택하면 데이터 처리 속도가 빨라져요
- 메모리 관리: 데이터 특성에 맞는 자료구조를 사용하면 메모리를 절약할 수 있어요
- 코드 가독성: 상황에 맞는 자료구조를 사용하면 코드가 더 명확해져요
🧱 주요 자료구조 살펴보기
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 초보 탈출을 응원합니다! 🎉
궁금한 점이 있다면 댓글로 남겨주세요~
'IT 초보 탈출 100일 챌린지' 카테고리의 다른 글
[100일의 IT 초보 탈출] #22 웹의 기초: HTML로 웹페이지 구조 만들기 🌐 (2) | 2025.03.22 |
---|---|
[100일의 IT 초보 탈출] #21 객체 지향 프로그래밍(OOP) 🧩 (2) | 2025.03.19 |
[100일의 IT 초보 탈출] #19 알고리즘의 효율성 - 시간 복잡도와 공간 복잡도 ⏱️ (2) | 2025.03.14 |
[100일의 IT 초보 탈출] #18 단계 UP! 실생활에서 만나는 중급 알고리즘 (2) | 2025.03.12 |
[100일의 IT 초보 탈출] #17 알고리즘과 컴퓨터의 요리 레시피 🍳 (1) | 2025.03.10 |