2304 BOJ Python

슬기로운 FE 세상·2022년 5월 3일
0

첫 번째 아이디어는 왼쪽부터 가장 큰 값을 집어넣고 temp를 가지고 더 큰 값이 들어오면 temp를 바꾸는 걸로 하려고 했지만 커졌다가 작아지는 애로사항이 있었다. 그렇기 때문에 가장 큰 값을 기준으로 index를 삼아서 좌 우를 나눠서 계산하는 방법을 통해 구하였다.

n = int(input())

arr = []
maxH = 1
maxL = 0
for _ in range(n):
    L, H = map(int, input().split())
    arr.append((L, H))
    if L > maxL : 
        maxL = L
    if H > maxH:
        maxH = H
        maxIndex = L
        
check = [0] * (maxL + 1)

for l, h in arr:
    check[l] = h

temp = 0
ans = 0
for i in range(maxIndex + 1): #앞에서 부터 maxIndex까지
    if check[i] > temp:
        temp = check[i]
    ans += temp

temp = 0

for i in range(maxL, maxIndex, -1): # 뒤에서부터 maxIndex 바로 뒤까지
    if check[i] > temp:
        temp = check[i]
    ans += temp

print(ans)
profile
자 드가자~~

0개의 댓글

관련 채용 정보