-
[백준] 14719번 문제 (빗물) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 10. 14. 13:21
https://www.acmicpc.net/problem/14719
import sys input = sys.stdin.readline h, w = map(int, input().split()) block = list(map(int, input().split())) result = 0 for i in range(1, w - 1): left = max(block[:i]) right = max(block[i + 1:]) m = min(left, right) if m > block[i]: result += m - block[i] print(result)
이 문제의 핵심은 더 큰 건물들 사이에 껴있으면 물이 잠긴다는 것을 파악하는 것이다.
for 문을 반복하며 매번 left와 right에서 가장 큰 값을 구한다.그리고 그 중에서 가장 작은 값(m)을 구한다.만약 m이 현재 블록보다 크다면 현재 블록은 빗물이 잠기는 블록이 된다.
따라서, m - 현재블록 높이(block[i])를 result에 더한다.
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 1743번 문제 (음식물 피하기) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 1806번 문제 (부분합) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 14888번 문제 (연산자 끼워넣기) 파이썬(Python) 풀이 (0) 2021.10.14 [백준] 1753번 문제 (최단경로) 파이썬(Python) 풀이 (0) 2021.10.12 [백준] 1932번 문제 (정수 삼각형) 파이썬(Python) 풀이 (0) 2021.10.04