[알고리즘] 프로그래머스 42584 주식가격 파이썬
문제
분류
스택
2중 for문이나 큐로 푼 사람도 있으나, 스택으로 풀었다.
코드
def solution(prices):
# 각 칸이 끝날 때까지 작은 칸을 만나지 않는다고 가정하고 초기화 한다
answer = [i for i in range(len(prices) - 1, -1, -1)]
stack = [] # 스택에는 값이 아닌 인덱스를 저장한다
for i in range(len(prices)):
# 만약 가격이 스택 맨위의 가격보다 낮다면 스택에서 그 가격보다 낮은 것들을 빼고, 그 answer의 인덱스에는 얼마나 지났는지 계산해서 넣어준다.
while stack and prices[i] < prices[stack[-1]]:
answer[stack[-1]] = i - stack[-1]
stack.pop()
stack.append(i)
return answer
print(solution([1, 2, 3, 2, 3]))
print(solution([5, 6, 3, 4, 2]))
Author And Source
이 문제에 관하여([알고리즘] 프로그래머스 42584 주식가격 파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@injoon2019/알고리즘-프로그래머스-42584-주식가격-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)