BOJ/Python
백준 14719번 빗물 파이썬
띵지니어
2024. 3. 19. 02:16
반응형
https://www.acmicpc.net/problem/14719
내 코드
h, w = map(int, input().split())
blocks = list(map(int, input().split()))
result = 0
for i in range(1, w-1):
left_max = max(blocks[:i])
right_max = max(blocks[i+1:])
standard = min(left_max, right_max)
depth = blocks[i]
if standard > depth:
result += (standard - depth)
print(result)
Review
문제 해결을 하기 위해 제가 접근한 방식입니다.
1. 조건상 맨 앞과 끝은 절대 채울 수 없다 (0번과 맨 끝 인덱스)
2. 특정 위치를 기준으로 양옆에 가장 높은 두 개의 기둥 중에, 낮은 기둥으로 기준으로 한다.
3. 특정 위치와 2번 내용으로 얻은 기둥을 비교하여 특정 위치가 더 낮으면 물을 채운다.
그림으로 보면 다음과 같아요
예제 입력 기준으로 설명해 보겠습니다.
왜 min(left_max, right_max) 가 standrad 인지는, 아래 힌트를 보고 생각했습니다.
잘못된 부분이나, 모르는 부분은 언제든지 의견 주시면 감사하겠습니다.
반응형