본문 바로가기

Swift '문법'

스택(Stack) 큐(Queue)

스택과 큐는 데이터 구조의 가지 기본 유형으로, 각각 데이터를 저장하고 액세스하는 서로 다른 방법을 제공합니다. 다음은 데이터 구조에 대한 설명과 차이점입니다.

스택 (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