Algoritm/BOJ

[BOJ] 10845번: 큐

twoDeveloper 2022. 9. 6. 23:53

■ 문제해설

다음 문제는 queue를 이용한 문제이고, python에서 제공하는 deque를 이용하여 문제를 해결하였습니다. 기본 리스트에서 값을 빼낼때 pop이 아닌 popleft를 사용합니다. queue는 FIFO 구조 입니다.

1) pop

[1, 2, 3, 4]

[1, 2, 3]

[1, 2]

[1]

 

2) popleft

[1, 2, 3, 4]

[2, 3, 4]

[3, 4]

[4]


■ 문제해답

from collections import deque
import sys
input = sys.stdin.readline

n = int(input())

q = deque()
for i in range(n):
	m = input().split()

	if m[0] == 'push':
		q.append(m[1])

	elif m[0] == 'pop':
		if not q:
			print(-1)
		else:
			print(q.popleft())

	elif m[0] == 'size':
		print(len(q))

	elif m[0] == 'empty':
		if q:
			print(0)
		else:
			print(1)

	elif m[0] == 'front':
		if not q:
			print(-1)
		else:
			print(q[0])

	elif m[0] == 'back':
		if not q:
			print(-1)
		else:
			print(q[-1])

■ 문제출처

https://www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

'Algoritm > BOJ' 카테고리의 다른 글

[BOJ] 10799번: 쇠막대기  (0) 2022.11.21
[BOJ] 1158번: 요세푸스 문제  (0) 2022.09.11
[BOJ] 1406번: 에디터  (0) 2022.09.06
[BOJ] 1874번: 스택 수열  (0) 2022.09.06
[BOJ] 9012번: 괄호  (0) 2022.09.06