[백준][python] 14719 빗물

yylog·2022년 10월 22일
0

문제

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

소스

if __name__ == "__main__":
    h,w = map(int,input().split())
    arr = list(map(int,input().split()))
    total = 0
    for i in range(1,w-1):
        left_max = max(arr[:i])
        right_max = max(arr[i+1:])

        compare = min(left_max,right_max)

        if arr[i] < compare:
            total += compare - arr[i]
    print(total)

설명

반복문을 돌려서 해당칸(i) 양 옆에 자기보다 높은 칸으로 둘려 쌓여 있는지 체크한다.
양 옆에 기둥 중 (작은값 - 나의 값) 이 고여있는 물이다.

  • 반복문으로 현재 칸에 얼마의 양의 물이 고이는지 체크한다.(처음과 마지막은 제외)
  • 왼쪽과 오른쪽을 비교해서 작은 것을 찾는다.
  • 작은것보다 내가 작으면 물이 고이고, 작은 기둥 - 나의 값이 최종 고인물의 양이다.
profile
경험하고 공부한 모든 것을 기록하는 공간

0개의 댓글