좌에서 한번 우에서 한번 마지막으로 중복부분 제거
import sys
input = sys.stdin.readline
N = int(input())
pillars = [list(map(int, input().split())) for _ in range(N)]
pillars.sort()
height = 0
left = 0
answer = 0
for pillar in pillars:
if height <= pillar[1]:
answer += (pillar[0] - left)*height
height = pillar[1]
left = pillar[0]
height = 0
left = 0
pillars.reverse()
for pillar in pillars:
if height <= pillar[1]:
answer += (left - pillar[0])*height
height = pillar[1]
left = pillar[0]
left = 0
h_t = 0
for pillar in pillars:
if height == pillar[1]:
answer -= (left - pillar[0])*h_t
left = pillar[0]
h_t = pillar[1]
answer += height
print(answer)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 2578 빙고 (0) | 2021.08.28 |
---|---|
[백준][Python] 2559 수열 (0) | 2021.08.28 |
[백준][Python] 2628 종이자르기 (0) | 2021.08.28 |
[백준][Python] 2635 수 이어가기 (0) | 2021.08.28 |
[백준][Python] 2669 직사각형 네개의 합집합의 면적 구하기 (0) | 2021.08.27 |