문제풀이/기타

[파이썬] [스택] 백준 1863 스카이라인

승무_ 2023. 2. 15. 12:07

문제

https://www.acmicpc.net/problem/1863

 

1863번: 스카이라인 쉬운거

첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫

www.acmicpc.net

코드

import sys
input=sys.stdin.readline
n = int(input())
answer = 0

skylines = []
for i in range(n):
    skylines.append(int(input().split()[1]))
skylines.append(0)

stk = [0]
for p in skylines:
    #height는 마지막으로 카운트한 건물의 높이
    height=p
    #이전 건물이 더 크면
    while stk[-1]>p:
        if height!=stk[-1]:
            answer+=1
            height=stk[-1]
        stk.pop()
    stk.append(p)
print(answer)