https://programmers.co.kr/learn/courses/30/lessons/42584
❗ 시간초과로 효율성 테스트를 통과하지 못했음
👉🏻 파이썬에선 pop(0)은 O(n)의 시간복잡도를 가지므로 큐를 구현하기엔 효율성 측면에서 불리하다
def solution(prices):
answer = []
while(1):
temp=0
if len(prices)==0:
break
for i in range(len(prices)):
temp=i
if prices[0]>prices[i]:
break
answer.append(temp)
prices.pop(0)
return answer
❗ deque 이용 : deque의 popleft()는 O(1)의 시간복잡도를 가져 pop(0)에 비하여 효율성 측면에서 유리
from collections import deque #dequq 생성 deq=deque() #기존의 리스트를 deque로 바꾸기 prices=deque(prices) prices.popleft() prices.popright()
#통과한 코드
from collections import deque
def solution(prices):
answer = []
prices=deque(prices)
while(1):
temp=0
if len(prices)==0:
break
for i in prices:
if prices[0]>i:
temp=prices.index(i)
break
temp=len(prices)-1
answer.append(temp)
prices.popleft()
return answer
❗ 두 번째 풀이와 비슷하지만 enumerate 활용하고 효율성 테스트에서 더 좋은 결과를 냄
from collections import deque
def solution(prices):
answer = []
prices=deque(prices)
while(1):
if len(prices)==0:
break
else:
temp=prices.popleft()
value=0
for i, j in enumerate(prices):
if temp>j:
value=i+1
break
value=len(prices)
answer.append(value)
return answer