문제
접근
스택 문제이다.
스택 최상단보다 큰 값이 나오면 작아질 때까지 스택에서 빼주면서 인덱스를 계산해준다.
모든 값을 스택에 추가한 후에는 스택에 얼마나 들어있었는지를 계산해주면 된다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(prices):
answer = [0] * len(prices)
stack = []
for i in range(len(prices)):
while True:
if len(stack) == 0 or prices[i] >= prices[stack[-1]]:
stack.append(i)
break
else:
tmp = stack.pop(-1)
answer[tmp] = i - tmp
while len(stack) != 0:
tmp = stack.pop(-1)
answer[tmp] = len(prices) - tmp - 1
return answer