728x90
반응형
문제풀이 GitHub
https://github.com/Seokii/baekjoon
문제링크
https://www.acmicpc.net/problem/10845
풀이(시간 초과)
from collections import deque
n = int(input())
dq = deque()
for _ in range(n):
command = list(input().split())
if command[0] == 'push':
dq.append(command[1])
elif command[0] == 'pop':
if len(dq) > 0 :
tmp = dq.popleft()
print(tmp)
else : print(-1)
elif command[0] == 'size':
print(len(dq))
elif command[0] == 'empty':
if len(dq) > 0: print(0)
else : print(1)
elif command[0] == 'front':
if len(dq) > 0: print(dq[0])
else : print(-1)
elif command[0] == 'back':
if len(dq) > 0: print(dq[-1])
else: print(-1)
파이썬에서는 dque 라이브러리를 통해 간단하게 큐를 구현할 수 있습니다.
.pop(), .append() 뿐만 아니라 .popleft(), appendleft(), reverse() 등을 사용해 쉽게 구현할 수 있습니다.
이 함수들을 통해 조건문을 작성했습니다.
풀이는 맞지만 시간 초과가 발생했습니다.
for문을 반복하면서 명령을 여러 줄 받기 때문에 입력 받는 시간을 줄일 필요가 있었습니다.
풀이(정답)
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
dq = deque()
for _ in range(n):
command = list(input().split())
if command[0] == 'push':
dq.append(command[1])
elif command[0] == 'pop':
if len(dq) > 0 :
tmp = dq.popleft()
print(tmp)
else : print(-1)
elif command[0] == 'size':
print(len(dq))
elif command[0] == 'empty':
if len(dq) > 0: print(0)
else : print(1)
elif command[0] == 'front':
if len(dq) > 0: print(dq[0])
else : print(-1)
elif command[0] == 'back':
if len(dq) > 0: print(dq[-1])
else: print(-1)
입력을 받을 때 sys라이브러를 불러와
sys.stdin.readline()을 통해 입력 받을 때의 시간을 최대한 줄였습니다.
input 대신에 sys.stdin.readline을 집어넣어 코드를 수정해 정답을 맞췄습니다.
728x90
반응형
'알고리즘 정복하기! > 백준 문제풀이' 카테고리의 다른 글
백준 11575번 Python / 문자열 (0) | 2022.03.22 |
---|---|
백준 17349번 Python / 구현 (0) | 2022.03.21 |
백준 17251번 Python / Dynamic Programming (0) | 2022.03.19 |
백준 17236번 Python / 수학, 이진(이분)탐색(Binary Search) (0) | 2022.03.10 |
백준 22353번 Python / 수학, 구현, 확률론 (0) | 2022.03.08 |
댓글