스택과 마찬가지로 삽입과 삭제의 위치가 제한적인 자료구조
선입선출 구조
큐의 기본 연산
큐의 사용을 위해 필요한 주요 연산
큐의 연산 과정
1차원 배열을 이용한 큐
상태 표현
초기 공백 큐 생성
삽입 : enqueue(item)
삭제 : deQueue
공백상태 및 포화상태 검사 : isEmpty(), isFull()
검색 Qpeek()
# 인풋받기
input_str = "1, 2, 1, 3, 2, 4, 2, 5, 4, 6, 5, 6, 6, 7, 3, 7"
lst = list(map(int,input_str.split(", ")))
# 그래프 만들기
from collections import defaultdict
graph = defaultdict(list)
for i in range(0, len(lst), 2):
a = lst[i]
b = lst[i+1]
graph[a].append(b)
graph[b].append(a)
# 큐 생성
queue = []
visited = []
queue.append(1)
visited.append(1)
# BFS
while queue:
# deQueue
tmp = queue.pop(0)
for node in graph[tmp]:
if node not in visited:
queue.append(node)
visited.append(node)
print(queue)
# BFS, visited가 tmp 아래 있으면 비효율 발생
queue = []
visited = []
queue.append(1)
# BFS
while queue:
# deQueue
tmp = queue.pop(0)
visited.append(tmp)
for node in graph[tmp]:
if node not in visited:
queue.append(node)
print(queue)