스택과 큐는 데이터 구조의 두 가지 기본 유형으로, 각각 데이터를 저장하고 액세스하는 서로 다른 방법을 제공합니다. 다음은 각 데이터 구조에 대한 설명과 차이점입니다.
스택 (Stack)
1. 정의: 스택은 LIFO(Last In First Out) 구조를 따르는 데이터 구조입니다. 즉, 나중에 삽입된 데이터가 먼저 삭제됩니다.
2. 주요연산:
push: 스택의 맨 위에 데이터를 추가합니다.
pop: 스택의 맨 위에 있는 데이터를 제거하고 반환합니다.
peek: 스택의 맨위에 있는 데이터를 제거하지 않고 반환합니다.
isEmpey:스택이 비어있는지 확인합니다.
stack = []
stack.append(1) # push
stack.append(2) # push
top = stack.pop() # pop, returns 2
사용 예: 함수 호출 시의 호출 스택, 역순 문자열 출력, DFS(깊이 우선 탐색) 알고리즘 등.
큐 (Queue)
정의: 큐는 FIFO(First In First Out) 구조를 따르는 데이터 구조입니다. 즉, 먼저 삽입된 데이터가 먼저 삭제됩니다.
주요 연산:
enqueue: 큐의 맨 뒤에 데이터를 추가합니다.
dequeue: 큐의 맨 앞에 있는 데이터를 제거하고 반환합니다.
peek: 큐의 맨 앞에 있는 데이터를 제거하지 않고 반환합니다.
isEmpty: 큐가 비어있는지 확인합니다.
예시:
from collections import deque
queue = deque()
queue.append(1) # enqueue
queue.append(2) # enqueue
front = queue.popleft() # dequeue, returns 1
사용 예: 프린터 대기열, BFS(너비 우선 탐색) 알고리즘,프로세스 관리 등.
주요 차이점
데이터 처리방식:
스택: 마지막에 들어간 데이터가 먼저 나오는 구조 (LIFO).
큐: 처음에 들어간 데이터가 먼저 나오는 구조 (FIFO).
연산방식:
스택: 데이터의 삽입과 삭제가 한쪽 끝(탑)에서만 일어남.
큐: 데이터의 삽입은 한쪽 끝(뒤)에서, 삭제는 다른 쪽 끝(앞)에서 일어남.
결론
스택과 큐는 특정 상황에서 매우 유용할 수 있는 각각의 데이터 구조입니다. 스택은 재귀적인 LIFO(후입선출) 동작이 필요할 때 유용하고, 대기열은 FIFO(선입선출) 동작이 필요할 때 유용합니다. 이 두 구조를 적절하게 사용하면 프로그램의 효율성과 가독성을 크게 향상시킬 수 있습니다.
'Swift '문법'' 카테고리의 다른 글
Class '클래스' (0) | 2024.07.04 |
---|---|
튜플(tuple) (0) | 2024.07.03 |
옵셔널 체이닝 (Optional Chaining) (0) | 2024.07.01 |
nil 정의 "스위프트" (0) | 2024.06.28 |
옵셔널 (0) | 2024.06.27 |