백준 14719 빗물

김민영·2023년 1월 5일
0

알고리즘

목록 보기
29/125

https://www.acmicpc.net/problem/14719

과정

  • 힌트 참고했습니다.
  • 높이마다 순회
    • 너비마다 순회
      • 블록의 높이가 너비보다 높거나 같으면, 시작점부터 해당 위치까지 빗물양(위치 차이) 합침. 해당 위치를 시작점으로 업데이트.
        • ex) 높이가 1이고, 블록 수가 3, 0, 1, 4인 경우, 1의 위치와 3의 위치 거리 차이를 빗물양으로 추가, 1을 시작점으로 변경
      • 처음 시작점 예외 처리 주의.
        • 시작점은 절대로 나올 수 없는 수인 음수로 지정했습니다.
H, W = map(int, input().split())
lst = list(map(int, input().split()))

ans = 0
for h in range(1, H+1):
    start = -1

    for w in range(W):
        if lst[w] >= h:
            if start >= 0:
                # 범위 추가
                ans += w - start - 1
            # 초기화
            start = w
print(ans)
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글