[백준] 10845: 큐

2400·2024년 12월 27일

백준

목록 보기
12/17
post-thumbnail

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

처음 시도

from collections import deque

N = int(input())

queue = deque()
for i in range(N):
    command = input().split()
    a = command[0]
    b = command[1] if len(command) > 1 else None

    if a == "push":
        queue.append(b)
    elif a == "pop":
        if not queue:
            print(-1)
        else:
            pop = queue.popleft()
            print(pop)
    elif a == "size":
        print(len(queue))
    elif a == "front":
        if not queue:
            print(-1)
        else:
            print(queue[0])
    elif a == "back":
        if not queue:
            print(-1)
        else:
            print(queue[-1])
    else:
        if not queue:
            print(1)
        else:
            print(0)

시간초과가 나왔다.

내가 봐도 좀 에반듯하긴 했다.

import sys
from collections import deque

input = sys.stdin.read
data = input().splitlines()

N = int(data[0])
queue = deque()
result = []  
for i in range(1, N + 1):
    command = data[i].split()
    a = command[0]
    b = command[1] if len(command) > 1 else None

    if a == "push":
        queue.append(b)
    elif a == "pop":
        if not queue:
            result.append(-1)
        else:
            result.append(queue.popleft())
    elif a == "size":
        result.append(len(queue))
    elif a == "empty":
        result.append(1 if not queue else 0)
    elif a == "front":
        if not queue:
            result.append(-1)
        else:
            result.append(queue[0])
    elif a == "back":
        if not queue:
            result.append(-1)
        else:
            result.append(queue[-1])


sys.stdout.write("\n".join(map(str, result)) + "\n")

우리의 파이썬은 항상 시간이 문제다. 그러니 6렙찍고 sys를 사용하여 입출력에서 효율을 챙겨야 한다.

import sys를 하여 한 번에 입력 받고 결과를 한 번에 출력하자.

파이썬의 입출력은 sys를 안쓰면 베인으로 스태틱없이 3웨이브 먹는거랑 똑같다(느리다는 거임) 그나마 효율을 챙기려면 sys(스태틱)을 써야한다.

profile
시즌 2의 공부기록 - Artificial Intelligence & AeroSpace

0개의 댓글