Algorithm/Python

[백준 10845] 큐

🥭맹2 2021. 8. 16. 22:59

1. 문제

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

 

10845번: 큐

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

www.acmicpc.net

2. 접근 방법

그냥 구현하면 됩니다.

 

백준은 입력도 내 맘대로 받을 수 있어서,

input으로 입력받을 수도 있고, readline을 사용해서 입력받을 수도 있는데

readline이 훠얼씬 빠르구

이 문제도 주어지는 명령의 갯수가 10,000개까지 가능해서 readline으로 받아야 시간초과가 나지 않습니다.

 

사실 deque쓸 필요 없는데 input으로 할 때 시간을 조금이라도 줄여보고자 deque를 사용했습니다.

readline을 써서 deque말고 그냥 list로 구현해도 될 듯 싶습니다

 

3. 코드

python

from collections import deque
import sys

N = int(sys.stdin.readline().rstrip())
q = deque()
for _ in range(N):
    order = sys.stdin.readline().rstrip()
    if order[:4] == 'push':
        order, n = order.split(' ')
        q.append(n)
    elif order == 'size':
        print(len(q))
    elif order == 'empty':
        print(0 if q else 1)
    elif not q:
        print(-1)
    elif order == 'front':
        print(q[0])
    elif order == 'back':
        print(q[-1])
    elif order == 'pop':
        print(q.popleft())

4. 마치며

딱히 문제가 어려워서는 아니고

order, *n = order.split(' ')

다른 사람 풀이를 보니 어떤 사람이 이렇게 명령을 분류했길래

이걸 좀 기록해놓고자 적었습니다.

 

그리고 어떤 사람은 아예 자료구조를 만들었더라구요 하하하 ~!