문제풀이/일일연습문제

[스택/큐]99클럽 코테 스터디 14일차 TIL + 백준/Bronze/10845. 큐

Mo_bi!e 2024. 11. 11. 10:37

큐 실패

시간 제한: 0.5 초 (추가 시간 없음)
메모리 제한: 256 MB
제출: 141376
정답: 66786
맞힌 사람: 52579
정답 비율: 49.169%


문제 설명

정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 여섯 가지이다:

  1. push X: 정수 X를 큐에 넣는 연산이다.
  2. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  3. size: 큐에 들어있는 정수의 개수를 출력한다.
  4. empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
  5. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  6. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

입력

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

출력

  • 출력해야 하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

예제 입력 1

15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front

예제 출력 1

1
2
2
0
1
2
-1
0
1
-1
0
3

 

 

<내 코드>

from collections import deque
import sys


def printSys(s):
    # sys.stdout.write(f"\n{str(s)}")
    sys.stdout.write(str(s) + "\n")


qu = deque()
N = int(sys.stdin.readline().strip())

for _ in range(N):
    inp = sys.stdin.readline().split()
    opp = inp[0]
    value = None
    if opp == "push":
        value = inp[1]
        qu.append(value)
    elif opp == "pop":
        if len(qu) == 0:
            printSys(-1)
            continue
        printSys(qu.popleft())

    elif opp == "size":
        printSys(len(qu))

    elif opp == "empty":
        if len(qu) == 0:
            printSys(1)
        else:
            printSys(0)

    elif opp == "front":
        if len(qu) == 0:
            printSys(-1)
            continue
        else:
            printSys(qu[0])
    elif opp == "back":
        if len(qu) == 0:
            printSys(0)
            continue
        else:
            printSys(qu[-1])
    else:
        continue

- 계속 틀렸다고 나옴

뭐가 틀렸는지 모르겠음

예제문제의 출력과 동일한데...