[python_파이썬_pass]백준_10845번_큐_실버4_풀이
2024. 10. 10. 20:56ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/slUxXU5NCUQ?feature=shared
24년 10월 10일 회사 러닝타임 및 점심시간 활용 풀이
<첫번째 시도 : 맞았습니다.>
리스트 변수를 두고 append()와 pop()으로 문제 해결
import sys
input = sys.stdin.readline
N = int(input())
queue = []
for _ in range(N):
command = list(input().split())
if command[0] == "push":
queue.append(command[1])
elif command[0] == "pop":
if len(queue) == 0:
print(-1)
else:
print(queue.pop(0))
elif command[0] == "size":
print(len(queue))
elif command[0] == "empty":
if len(queue) == 0:
print(1)
else:
print(0)
elif command[0] == "front":
if len(queue) == 0:
print(-1)
else:
print(queue[0])
elif command[0] == "back":
if len(queue) == 0:
print(-1)
else:
print(queue[-1])
<두번째 시도 : 맞았습니다.>
deque라이브러리를 사용해서 해결했다. 리스트랑 코드는 거의 동일하지만 시간복잡도에서 deque가 효율적이다.
- 리스트에서 pop(0)은 O(N) 이므로 데이터가 많아질수록 성능이 떨어집니다.
- deque의 popleft()는 O(1) 이므로 많은 데이터를 다룰 때 훨씬 더 효율적입니다.
from collections import deque
input = sys.stdin.readline
# 그냥 리스트로 할때보다 시간이 더 걸리네?
N = int(input())
d = deque()
for _ in range(N):
cmd = list(input().split())
if cmd[0] == "push":
d.append(cmd[1])
elif cmd[0] == "pop":
if len(d) == 0:
print(-1)
else:
print(d.popleft()) #pop(0)으로 하니까 런타임 에러
elif cmd[0] == "size":
print(len(d))
elif cmd[0] == "empty":
if len(d) == 0:
print(1)
else:
print(0)
elif cmd[0] == "front":
if len(d) == 0:
print(-1)
else:
print(d[0])
elif cmd[0] == "back":
if len(d) == 0:
print(-1)
else:
print(d[-1])
728x90
반응형
'코드리뷰' 카테고리의 다른 글
★[python_파이썬_pass]백준_16398번_행성 연결_MST_풀이 (0) | 2024.10.11 |
---|---|
[python_파이썬_pass]백준_11866번_요세푸스 문제 0_실버4_풀이 (0) | 2024.10.10 |
[python_파이썬_pass]백준_10828번_스택_실버4_풀이 (0) | 2024.10.10 |
[python_파이썬_pass]백준_10773번_제로_실버4_풀이 (1) | 2024.10.10 |
[python_파이썬_pass]백준_9012번_괄호_실버4_풀이 (1) | 2024.10.10 |