문제: https://programmers.co.kr/learn/courses/30/lessons/42588
풀이
스택으로 풀이했다.
스택의 가장 위 원소가 heights 반복문에서 현재 높이보다 작거나 같으면 pop을 한다.
크다면 신호를 수신하는 탑일 것이므로 answer[i] 값을 스택 가장 위 원소의 인덱스로 바꾼다.
마지막으로는 매번 현재의 height와 인덱스를 stack에 append 해준다.
소스코드
def solution(heights):
stack = []
answer = [0 for _ in range(len(heights))]
for i, height in enumerate(heights):
while stack and height >= stack[-1][0]:
stack.pop()
if stack:
answer[i] = stack[-1][1]
stack.append((height, i + 1))
return answer