length = int(input())
buildings = []
stack = []
res = 0
for i in range(length):
buildings.append((int(input())))
for i in range(length - 1, -1, -1): #역순으로 검사
while stack:
if stack[-1]['height'] < buildings[i]: #스택 마지막 요소가 나보다 작을때
stack.pop()
else: #스택 마지막 요소가 나보다 클때
res += (stack[-1]['idx'] - i - 1)
stack.append({'idx': i, 'height': buildings[i]})
break
if not stack:
res += (length - i - 1)
stack.append({'idx': i, 'height': buildings[i]})
print(res)
이전에 풀었던 탑 문제랑 굉장히 유사했다.
방향만 달라서 포문을 역순으로 돌렸는데, 생각보다 고민할 점이 좀 있었지만 근간은 스택에서 다를게 없었다
무난히 성공