[백준] 빗물

쏠로몬·2021년 12월 25일
0

접근 방법 : 투 포인터인듯 투 포인터 아닌 투 포인터인 너
원래 해답을 보니 투 포인터 or 스택으로 푸는 문제였지만
전체 블럭에서 최대 높이를 갖는 블럭을 찾고 그 기준으로 양쪽에서 접근하면서 만나는 높이들을다 더해준 뒤 (접근하면서 만나는 블럭 높이가 높아지면 Max 갱신 후 더해줌) 전체 블럭 높이를 빼주면 답이 나온다.

import sys

H, W = map(int, sys.stdin.readline().split())

block_list = list(map(int, sys.stdin.readline().split()))

h_index = 0
h_max = 0

for i in range(W):
    if h_max < block_list[i]:
        h_max = block_list[i]
        h_index = i

temp_max = 0
temp_cnt = 0

for i in range(h_index + 1):
    if temp_max < block_list[i]: # 이 부분이 핵심
        temp_max = block_list[i]
    temp_cnt += temp_max

temp_max = 0

for i in range(W - 1, h_index, -1):
    if temp_max < block_list[i]: # 이 부분이 핵심
        temp_max = block_list[i]
    temp_cnt += temp_max

print(temp_cnt - sum(block_list))
profile
이사가요~ 티스토리 블로그 입니다. https://help-solomon.tistory.com/

0개의 댓글