알고리즘 공부(C++)

백준 18258 큐2

혀니리리 2022. 8. 27. 19:51
728x90

18258번: 큐 2 (acmicpc.net)

 

18258번: 큐 2

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

www.acmicpc.net

import sys
from collections import deque
queue = deque([])
N = int(sys.stdin.readline())
for i in range(N):
    str = sys.stdin.readline()
    if (str[:4] == 'push'):
        queue.append(int(str[5:]))
    elif (str[:3] == "pop"):
        if (len(queue) != 0):
            print(queue[0])
            queue.popleft()
        else:
            print(-1)
    elif (str[:5] == "front"):
        print(queue[0] if len(queue) != 0 else -1)
    elif (str[:4] == "back"):
        print(queue[len(queue) - 1] if len(queue) != 0 else -1)
    elif (str[:4] == "size"):
        print(len(queue))
    elif (str[:5] == "empty"):
        print(1 if len(queue) == 0 else 0)

queue문제랑 똑같은데 다른 점은 N이 10000에서 2000000으로 증가했기 때문에 시간 맞추기가 더 까다로워졌다.

따라서 deque를 사용해서 pop할때 popleft를 하는 방식으로 해야.. 한다는 것을 깨달음

deque에선 pop(0)을 사용못함.. 

728x90

'알고리즘 공부(C++)' 카테고리의 다른 글

백준 15650 N과 M(2) - 백트래킹문제  (0) 2022.08.28
백준 3986 좋은 단어  (0) 2022.08.27
백준 1541 잃어버린 괄호  (0) 2022.08.27
4948 베르트랑 공준  (0) 2022.08.26
백준 10814 나이순 정렬  (0) 2022.08.25