CodingTest/Baekjoon

[baekjoon] 백준 18258번(파이썬): 큐 2

JunJangE 2021. 9. 27. 21:54

문제

 

18258번: 큐 2

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

www.acmicpc.net

코드

import sys
from collections import deque


n = int(sys.stdin.readline())
queue = deque()
for i in range(n):
    order = sys.stdin.readline().split()

    if order[0] == "pop":
        if queue:
            print(queue.popleft())
        else:
            print(-1)

    elif order[0] == "size":
        print(len(queue))

    elif order[0] == "empty":
        if queue:
            print(0)
        else:
            print(1)

    elif order[0] == "front":
        if queue:
            print(queue[0])
        else:
            print(-1)
    elif order[0] == "back":
        if queue:
            print(queue[-1])
        else:
            print(-1)
    elif order[0] == "push":
        queue.append(order[1])

 

실패한 코드(시간 초과)

import sys
from collections import deque


n = int(sys.stdin.readline())
queue = deque()
for i in range(n):
    order = list(map(str, sys.stdin.readline().split()))

    if order[0] == "pop":
        if queue:
            print(queue.popleft())
        else:
            print(-1)

    elif order[0] == "size":
        print(len(queue))

    elif order[0] == "empty":
        if queue:
            print(0)
        else:
            print(1)

    elif order[0] == "front":
        if queue:
            print(queue[0])
        else:
            print(-1)
    elif order[0] == "back":
        if queue:
            print(queue[-1])
        else:
            print(-1)
    elif order[0] == "push":
        queue.append(order[1])

명령을 입력 받을 때 리스트 형식으로 받아서 시간 초과가 난 것을 보인다.

리스트로 입력 받는 것보다 문자열로 입력 받는게 시간 복잡도가 더 효율적인가 보다.

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com