작심 365
[백준 10845] 파이썬 본문
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
import sys
from collections import deque #덱 사용
input=sys.stdin.readline
n=int(input())
queue=deque()
for _ in range(n):
cmd,*val=input().split() # cmd: 명령받기, val: 숫자받기(숫자는 없을수도 있으므로 가변인자로)
if cmd=='push':
queue.append(int(val[0]))
elif cmd=='pop':
if queue:
print(queue.popleft())
else:
print(-1)
elif cmd=='size':
print(len(queue))
elif cmd=='empty':
if queue:
print(0)
else:
print(1)
elif cmd=='front':
if queue:
print(queue[0])
else:
print(-1)
elif cmd=='back':
if queue:
print(queue[-1])
else:
print(-1)
정리
-양쪽에서 값을 넣고 빼기위해 deque 라이브러리 사용. (큐, 스택 커버 가능)
-deque을 사용하면 popleft(),popright(),append()등 대부분 연산을 O(1) 에 가능하다.
-input을 sys.stdin.readline으로 변경하지 않으면 시간초과 발생.
'코테 > 백준' 카테고리의 다른 글
[백준 9095번] 1,2,3 더하기 - (Java/python) (1) | 2023.12.20 |
---|---|
[백준 1463번] 1로 만들기 - (Java/python) (1) | 2023.12.19 |
[백준 1261번] 알고스팟 - (Java/python) (0) | 2023.12.18 |
[백준 14226번] 이모티콘 - (Java/python) (2) | 2023.12.15 |
[백준 2675] 파이썬 (1) | 2022.06.28 |
Comments