-
2. 리스트, 스택, 큐, 셋, 딕셔너리practice_자료구조 2024. 10. 25. 08:15
리스트(List), 스택(Stack), 큐(Queue), 셋(Set), 딕셔너리(Dictionary)는 파이썬을 비롯한 프로그래밍에서 자주 사용되는 데이터 구조입니다. 각 데이터 구조의 특징과 사용 예를 살펴보겠습니다.
1. 리스트(List)
- 정의: 리스트는 순서가 있는 변경 가능한 시퀀스 데이터 구조입니다. 다양한 타입의 데이터를 저장할 수 있고, 인덱스로 접근 가능합니다.
- 특징:
- 인덱스 기반으로 원소에 접근 가능 (0번 인덱스부터 시작)
- 중복된 값을 허용
- 크기가 가변적 (동적으로 크기가 변함)
- 메서드 예시: append(), remove(), insert(), pop(), sort()
- 예시:
my_list = [1, 2, 3, 4, 5] my_list.append(6) # [1, 2, 3, 4, 5, 6]
2. 스택(Stack)
- 정의: 스택은 후입선출(LIFO, Last In First Out) 구조로, 가장 나중에 추가된 데이터가 가장 먼저 제거되는 구조입니다.
- 특징:
- 데이터를 삽입하거나 제거하는 작업은 스택의 맨 위(top) 에서만 이루어짐
- push(삽입)와 pop(삭제) 작업이 주된 연산
- 메서드 예시: append() (push), pop() (pop)
- 예시
stack = [] stack.append(10) # push stack.append(20) stack.pop() # 20이 제거됨
3. 큐(Queue)
- 정의: 큐는 선입선출(FIFO, First In First Out) 구조로, 가장 먼저 들어온 데이터가 가장 먼저 나가는 구조입니다.
- 특징:
- 데이터가 한쪽 끝(뒤)에서 삽입되고, 반대쪽 끝(앞)에서 제거됨
- enqueue(삽입)와 dequeue(삭제) 작업이 주된 연산
- 메서드 예시: append() (enqueue), pop(0) (dequeue)
- 예시
queue = [] queue.append(1) # enqueue queue.append(2) queue.pop(0) # dequeue, 1이 제거됨
4. 셋(Set)
- 정의: 셋은 중복을 허용하지 않고, 순서가 없는 데이터 구조입니다. 집합 연산(교집합, 합집합 등)이 유용하게 사용됩니다.
- 특징:
- 중복된 값을 허용하지 않음
- 순서가 없기 때문에 인덱스로 접근 불가
- 집합 연산 가능 (union(), intersection(), difference())
- 메서드 예시: add(), remove(), union(), intersection()
- 예시
my_set = {1, 2, 3, 4} my_set.add(5) # {1, 2, 3, 4, 5}
5. 딕셔너리(Dictionary)
- 정의: 딕셔너리는 키-값 쌍으로 데이터를 저장하는 구조입니다. 각 키는 고유하며, 이를 통해 값에 접근할 수 있습니다.
- 특징:
- 키는 중복될 수 없으며, 값은 중복될 수 있음
- 순서가 없으며, 키로 값을 조회
- 키와 값의 쌍으로 데이터를 저장
- 메서드 예시: get(), keys(), values(), items(), update()
- 예시:
my_dict = {"name": "Ha-jun", "age": 25} my_dict["age"] = 26 # 딕셔너리 값 수정
이 각각의 데이터 구조는 특정한 상황에서 더 효율적인 사용이 가능하며, 적절하게 선택하는 것이 중요합니다. 예를 들어, 스택은 후입선출 방식의 문제에서 유용하고, 큐는 선입선출이 필요한 상황에서 사용됩니다. 리스트는 순서가 중요한 경우, 셋은 중복을 제거해야 할 때, 딕셔너리는 키-값으로 데이터를 빠르게 조회할 때 주로 사용됩니다
'practice_자료구조' 카테고리의 다른 글
6. 동적프로그래밍 (0) 2024.10.15 KMP 문자열 검색 알고리즘 (0) 2024.10.14 트라이(Trie)와 접두사 트리(Prefix Tree)의 차이점과 사용예시 (0) 2024.10.14 벨만-포드(Bellman-Ford) 알고리즘과 다익스트라(Dijkstra) 알고리즘의 차이점과 사용 (2) 2024.10.14 (Red-Black Tree)의 기본 속성과 그 왜곡 방지 방법 (0) 2024.10.14