Algorithm/Programmers
[Programmers Lv.2]주식가격 (Python)
꾸지새미언니
2022. 8. 24. 19:26
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42584
내 코드 - 효율성 테스트 실패
def solution(prices):
answer = []
while prices:
temp = prices.pop(0)
cnt = 0
for i in range(len(prices)):
if prices[i] >= temp:
cnt += 1
else:
cnt += 1
break
answer.append(cnt)
return answer
다른 사람 풀이
from collections import deque
def solution(prices):
answer = []
p = deque(prices)
while p:
temp = p.popleft()
cnt = 0
for i in p:
if i >= temp:
cnt += 1
else:
cnt += 1
break
answer.append(cnt)
return answer
해결 방법
효율성 테스트에서 시간 초과가 나서 2가지를 바꿔주었다.
1️⃣ queue가 아닌 deque 사용하기! pop(0)보다 popleft()가 빠르다는 것을 알고 있어서 가능했다.
2️⃣ for문을 돌 때마다 큐의 길이를 계산하는 대신, for문을 큐의 아이템을 하나씩 보게 만들었다.