반응형
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 인지는, 아래 힌트를 보고 생각했습니다.
잘못된 부분이나, 모르는 부분은 언제든지 의견 주시면 감사하겠습니다.
반응형
'BOJ > Python' 카테고리의 다른 글
백준 7568번 덩치 파이썬 (0) | 2024.03.22 |
---|---|
백준 14502번 연구소 파이썬 BFS (0) | 2024.03.20 |
백준 1966번 프린터 큐 파이썬 (0) | 2024.03.08 |
[프로그래머스] 의상 파이썬 (1) | 2024.02.12 |
[프로그래머스] 키패드 누르기 파이썬 (2) | 2023.11.24 |