14719. 빗물
14719번: 빗물
첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치
www.acmicpc.net
- 다른 사람 풀이
- 막히는 부분 사이 중에 작은 높이까지만 물이 차므로
- 각 위치마다 왼쪽의 최댓값, 오른쪽의 최댓값 구해서 둘 중 작은 값을 구한다
- 만약 그 위치 값이 작은 값보다 작다면 그 차이만큼 물이 차니까 계산
r,c = map(int, input().split())
lst = list(map(int, input().split()))
ans = 0
for i in range(1, c - 1):
#각 위치에서 양 옆으로 가장 큰 값들 중
left = max(lst[:i])
right = max(lst[i+1:])
#둘 중 작은 값의 높이까지만 빗물이 찬다
min_value = min(left, right)
if lst[i] < min_value:
ans += min_value - lst[i]
print(ans)
'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준] [그리디] 16953. A → B (0) | 2023.07.11 |
|---|---|
| [백준] [그리디] 13305 주유소 (0) | 2023.07.11 |
| [BFS] 14620. 꽃길 (0) | 2023.07.08 |
| [백준] [BFS][그룹화] 2573. 빙산 (0) | 2023.07.08 |
| [백준] [BFS] 2344. 거울 (0) | 2023.07.08 |