def solution(heights):
answer = []
for i in range(len(heights)):
new = heights[0:i]
re_new = new[::-1]
if i == 0:
got = 0
elif max(new) <= heights[i] :
got = 0
else:
for x in re_new:
if x > heights[i]:
break
got = len(new) - re_new.index(x)
answer.append(got)
return answer
heights의 길이 만큼 반복하는 i에 대해,
인덱스 0 ~ i-1 까지 담긴 새 리스트 new와 그걸 뒤집은 re_new를 만든다.
인덱스 i 가 0이거나 그 값이 new의 최대값보다 크거나 같으면 o을 저장하고,
그게 아니면 re_new에서 값보다 큰 값인 x를 찾고, new에서 x의 인덱스값(뒤에서부터) 를 구해서 got에 저장한다.
차례로 got을 append해준다
def solution(heights):
answer = [0]*len(heights)
stack = []
for i in reversed(range(len(heights))):
while stack and stack[-1][1] < heights[i]:
idx, height = stack.pop()
answer[idx] = i+1
stack.append((i, heights[i]))
return answer