백준 6198 옥상 정원 꾸미기 Python

Derhon·2023년 11월 16일
0
post-thumbnail

백준 6198 옥상 정원 꾸미기

나의 답

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)

이전에 풀었던 탑 문제랑 굉장히 유사했다.
방향만 달라서 포문을 역순으로 돌렸는데, 생각보다 고민할 점이 좀 있었지만 근간은 스택에서 다를게 없었다
무난히 성공

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/

0개의 댓글