프로그래머스 : 주식가격
2021. 11. 16. 19:06ㆍ문제풀기/프로그래머스
https://programmers.co.kr/learn/courses/30/lessons/42584
처음에 이중 for문으로 될까? 했는데 효율성까지 통과가 된다.
<이중 for문으로 풀이>
def solution(prices):
answer = []
for i in range(len(prices)):
result = 0
for j in range(i+1,len(prices)):
result += 1
if prices[j]<prices[i]:
break
answer.append(result)
return answer
하지만, 스택/큐로 분류가 되어있었기에, 이중 for문 말고 다른 방법도 있을 것 같아서 스택/큐로도 풀어보았다.
from collections import deque
def solution(prices):
answer = [0] * len(prices)
queue = deque([[0,prices[0]]])
for i in range(1,len(prices)):
if prices[i] < queue[-1][1]:
while queue and prices[i] < queue[-1][1]:
nowi, value = queue.pop()
answer[nowi] = i-nowi
queue.append([i,prices[i]])
while queue:
nowi,value = queue.pop()
answer[nowi] = len(prices)-nowi-1
return answer
다음과 같이 실행시간이 줄어드는 것을 볼 수 있다.
'문제풀기 > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 최솟값 만들기 (0) | 2021.11.16 |
---|---|
프로그래머스 : 전력망을 둘로 나누기 (0) | 2021.11.03 |
프로그래머스 : 올바른 괄호 (0) | 2021.10.30 |
프로그래머스 : 구명보트 (0) | 2021.10.29 |
프로그래머스 : 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록 (0) | 2021.10.29 |