작심 365

[백준 10845] 파이썬 본문

코테/백준

[백준 10845] 파이썬

eunKyung KIM 2022. 6. 27. 11:02

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으로 변경하지 않으면 시간초과 발생.

 

Comments