코딩테스트/BOJ

[백준] [구현] 14719. 빗물

박소민 2023. 7. 8. 22:14
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