https://www.acmicpc.net/problem/10845
문제
21.02.12 접근법
큐는 줄서기로, 먼저 들어온 것이 먼저 나간다.
때문에 popleft가 있는 deque을 사용해서 하는 것이 좋다고 판단
21.02.12 코드
import sys
from collections import deque
N=int(input())
queue=deque([])
for i in range(N):
comd=sys.stdin.readline().split()
if comd[0]=='push':
queue.append(int(comd[1]))
elif comd[0]=='pop':
if queue: print(queue.popleft())
else: print(-1)
elif comd[0]=='size':
print(len(queue))
elif comd[0]=='empty':
if queue: print(0)
else: print(1)
elif comd[0]=='front':
if queue: print(queue[0])
else: print(-1)
elif comd[0]=='back':
if queue: print(queue[-1])
else: print(-1)
21.07.20 접근법
deque(데크) 사용 : 왼쪽에서도 pop을 해야했기 때문에
deque가 list보다 시간복잡도가 나음.
같은 append,pop같은 경우 list의 경우 O(n)이지만, deque는 O(1)
2월에 한 코드와 비교해보니 2월엔 if-else문을 사용했고, 7월엔 try-except문 사용
시간 체크해보니 2월의 시간이 더 빨랐음.
결론; try-except문보단 if-else문을 사용하기!
21.07.20 코드
import sys
from collections import deque
deq=deque()
N=int(input())
for _ in range(N):
cmd=sys.stdin.readline().strip().split()
if cmd[0]=='push':
deq.append(int(cmd[1]))
elif cmd[0]=='pop':
try:
print(deq.popleft())
except:
print(-1)
elif cmd[0]=='size':
print(len(deq))
elif cmd[0]=='empty':
if deq:
print(0)
else:
print(1)
elif cmd[0]=='front':
try:
print(deq[0])
except:
print(-1)
elif cmd[0]=='back':
try:
print(deq[-1])
except:
print(-1)
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 10866번 덱 - Python(파이썬) (0) | 2021.07.22 |
---|---|
[백준] 1158번 요세푸스 문제 - Python(파이썬) (0) | 2021.07.22 |
[백준] 1406번 에디터 - Python(파이썬) (0) | 2021.07.22 |
[백준] 1874번 스택 수열 - Python(파이썬) (0) | 2021.07.22 |
[백준] 9012번 괄호 - Python(파이썬) (0) | 2021.07.21 |