알고리즘/백준

[백준] 18258번 큐 2 (Python)

wookcode 2021. 3. 13. 23:29
728x90
반응형

문제

www.acmicpc.net/problem/18258

 

18258번: 큐 2

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

www.acmicpc.net

 

코드

import sys
from collections import deque
N = int(input())

queue = deque()

def push(X):
    queue.append(X)

def pop():
    if not queue:
        return -1
    return queue.popleft()

def size():
    return len(queue)

def empty():
    if queue:
        return 0
    else:
        return 1

def front():
    if not queue:
        return -1
    return queue[0]

def back():
    if not queue:
        return -1
    return queue[-1]

for i in range(N):
    a=sys.stdin.readline().split()
    if a[0] == 'push':
        push(int(a[1]))
    elif a[0] == 'pop':
        print(pop())
    elif a[0] == 'size':
        print(size())
    elif a[0] == 'empty':
        print(empty())
    elif a[0] == 'front':
        print(front())
    elif a[0] == 'back':
        print(back())
    

 

코드설명

큐를 직접 구현하는 문제인데 입력을 sys로 바꿔도 시간초과가 나서 어쩔 수 없이 deque을 import해서 leftpop()을 통해 시간초과를 해결해 풀었다.

 

반응형