<코드 제출 1> - 시간 초과
queue = []
num = int(input())
for i in range(num):
command = input().strip().split()
if command[0] == 'push':
queue.append(command[1])
elif command[0] == 'pop':
if queue:
print(queue.pop(0))
else:
print(-1)
elif command[0] == 'size':
print(len(queue))
elif command[0] == 'empty':
if queue:
print(0)
else:
print(1)
elif command[0] == 'front':
if queue:
print(queue[0])
else:
print(-1)
elif command[0] == 'back':
if queue:
print(queue[-1])
else:
print(-1)
<코드 제출 2> - 정답
import sys
queue = []
input = sys.stdin.readline
num = int(input())
for i in range(num):
command = input().strip().split()
if command[0] == 'push':
queue.append(command[1])
elif command[0] == 'pop':
if queue:
print(queue.pop(0))
else:
print(-1)
elif command[0] == 'size':
print(len(queue))
elif command[0] == 'empty':
if queue:
print(0)
else:
print(1)
elif command[0] == 'front':
if queue:
print(queue[0])
else:
print(-1)
elif command[0] == 'back':
if queue:
print(queue[-1])
else:
print(-1)
※큐 구현은 Python의 collections.deque를 사용하는 것이 효율적이다.
<수정한 코드>
import sys
from collections import deque
#큐 초기화
queue = deque()
input = sys.stdin.readline
num = int(input())
for _ in range(num):
command = input().strip()
if command.startswith('push'):
_,value = command.split()
queue.append(int(value))
elif command == 'pop':
print(queue.popleft() if queue else -1)
elif command == 'size':
print(len(queue))
elif command == 'empty':
print(1 if not queue else 0)
elif command == 'front':
print(queue[0] if queue else -1)
elif command == 'back':
print(queue[-1] if queue else -1)
'[백준] > python' 카테고리의 다른 글
[백준] ATM(11399) - python (2) | 2025.01.08 |
---|---|
[백준] 대표 자연수(2548) - python (1) | 2025.01.07 |
[백준] 중앙 이동 알고리즘(2903) - python (0) | 2024.05.17 |
[백준] 프린터 큐(1966) - python (0) | 2023.02.23 |
[백준] 회전하는 큐(1021) - python (0) | 2023.02.13 |