반응형
1. 문제
2. 코드
from collections import deque
import sys
n = int(input())
l = deque([])
for i in range(n):
s = sys.stdin.readline()
#s = input()
#push
if s[1] == 'u':
s, num = s.split()
l.append(int(num))
#pop
elif s[0] == 'p':
if len(l) == 0:
print(-1)
continue
#temp = l[start]
temp = l.popleft()
#start += 1
print(temp)
#size
elif s[0] == 's':
print(len(l))
#empty
elif s[0] == 'e':
if len(l) == 0:
print(1)
else:
print(0)
#front
elif s[0] == 'f':
if len(l) == 0:
print(-1)
continue
print(l[0])
#back
if s[0] == 'b':
if len(l) == 0:
print(-1)
continue
print(l[len(l)-1])
3. 풀이
이 문제의 관건은 deque를 사용하는 것이다.
front, 즉 제일 앞의 값을 꺼내오는 게 있기 때문이다.
단순히 list를 사용해서 pop(0)을 하면 list 크기에 따라 시간이 달라지기 때문에 시간초과가 난다. O(n)이다.
그런데 deque로 popleft()를 하면 O(1)로 수행할 수 있다.
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2822번 - 점수 계산 (0) | 2022.01.06 |
---|---|
[백준] 11866번 - 요세푸스 문제 0 (0) | 2022.01.05 |
[백준] 5598 - 카이사르 암호 (파이썬) (0) | 2022.01.05 |
[백준] 4659번 - 비밀번호 발음하기 (파이썬) (0) | 2022.01.05 |
[백준] 11721번 - 열 개씩 끊어 출력하기 (파이썬) (0) | 2022.01.04 |