접근 방법 : 투 포인터인듯 투 포인터 아닌 투 포인터인 너
원래 해답을 보니 투 포인터 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))