💡 Codeing Test/백준

백준 14719) 빗물 (python)

밈98 2024. 3. 14. 10:41

https://www.acmicpc.net/problem/14719

 

14719번: 빗물

첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치

www.acmicpc.net

h,w =map(int,input().split())
arr = list(map(int, input().split()))

res = 0
for i in range(1, w-1):
    tmp = min(max(arr[:i]), max(arr[i+1:]))
    if tmp > arr[i]:
        res += tmp - arr[i]
print(res)

 

코드는 짧지만 생각해야할 것이 많은 문제

 

고이는 빗물의 양을 구해야하기때문에 앞뒤로 높이 고려해서 풀 수 없다

 

인덱스 i 위치를 기준으로 높이의 최대값을 반으로 나눠서 비교를 하고,

 

두개의 최댓값중에 최소를 구해서

 

현재 위치보다 그 최소값이 크다면 고이는 빗물 값을 구해주는 문제이다