문제
https://www.acmicpc.net/problem/2304
설계
파이썬
N = int(input())
arr = [list(map(int, input().split())) for _ in range(N)]
arr.sort()
# 가장 높은 기둥의 크기와 index 찾기
maxI, maxV = 0, 0
for i in range(N):
if maxV < arr[i][1]:
maxV = arr[i][1]
maxI = i
# 앞에서부터 가장 높은 기둥 전까지의 넓이 구하기
answer = 0
start = arr[0]
for i in range(maxI + 1):
if i == maxI:
answer += (arr[i][0] - start[0]) * start[1]
answer += arr[i][1] # 가장 높은 기둥의 넓이를 더한다.
elif start[1] < arr[i][1]:
answer += (arr[i][0] - start[0]) * start[1]
start = arr[i]
# 뒤에서부터 가장 높은 기둥 전까지의 넓이 구하기
start = arr[-1]
for i in range(N - 1, maxI - 1, -1):
if i == maxI:
answer += (start[0] - arr[i][0]) * start[1]
elif start[1] < arr[i][1]:
answer += (start[0] - arr[i][0]) * start[1]
start = arr[i]
print(answer)
'PS (Problem Solving) > Baekjoon' 카테고리의 다른 글
[백준] 1283. 단축키 지정 - 파이썬 (0) | 2023.03.07 |
---|---|
[백준] 2302. 극장 좌석 - 파이썬 (0) | 2023.03.02 |
[백준] 1158. 요세푸스 문제 - 파이썬 (0) | 2023.02.28 |
[백준] 2581. 소수 - 파이썬 (0) | 2023.02.01 |
[백준] 12931. 두 배 더하기 - 파이썬 (0) | 2023.01.31 |