백준 / 12719번 / 빗물 / python 파이썬

2025. 1. 21. 21:46·코딩테스트/백준 (python)

 

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

 

 

문제

2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다.

비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까?

입력

첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500)

두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다.

따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다.

출력

2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라.

빗물이 전혀 고이지 않을 경우 0을 출력하여라.

예제 입력 1 

4 4
3 0 1 4

예제 출력 1 

5

예제 입력 2 

4 8
3 1 2 3 4 1 1 2

예제 출력 2 

5

나의 풀이

h, w = map(int, input().split())
block = list(map(int, input().split()))
answer = 0

for i in range(1, w-1):
    left = max(block[:i])
    right = max(block[i+1:])
    m = min(left, right)

    if m > block[i]:
        answer += m - block[i]
print(answer)

 

처음엔 이중 for문 돌려가며 블럭이 있는 위치를 저장하고, 왼쪽부터 높이를 체크하며 풀었지만 시간 초과였다.

 

문제는 간단하게 1번줄부터 w-1줄 범위까지(양 끝은 물이 채워질 수 없으므로) 검사하고자 하는 세로줄을 기준으로 왼쪽, 오른쪽을 나누어 각각 최댓값을 구하고 그들의 최솟값 m을 구한다. 현재 세로줄 블럭은 m-현재 세로줄의 블럭 높이 만큼 물이 채워지므로 w-1줄까지 채워지는 물의 수를 더하면 답을 구할 수 있다.

 

'코딩테스트 > 백준 (python)' 카테고리의 다른 글

백준 / 1072번 / 게임 / python 파이썬  (0) 2025.02.04
백준 / 1890번 / 점프 / python 파이썬  (0) 2025.01.27
백준 / 2468번 / 안전 영역 / python 파이썬  (0) 2025.01.17
백준 / 5430번 / AC / python 파이썬  (0) 2025.01.13
백준 / 18352번 / 특정 거리의 도시 찾기 (BFS) / python 파이썬  (0) 2025.01.10
'코딩테스트/백준 (python)' 카테고리의 다른 글
  • 백준 / 1072번 / 게임 / python 파이썬
  • 백준 / 1890번 / 점프 / python 파이썬
  • 백준 / 2468번 / 안전 영역 / python 파이썬
  • 백준 / 5430번 / AC / python 파이썬
seulll
seulll
개인 공부 / 정리 블로그입니다 https://github.com/seul1009
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (342) N
      • 코딩테스트 (234) N
        • programmers (python) (157) N
        • 백준 (python) (75)
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (43)
        • Python (4)
        • Java | Spring (7)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    프렌즈4블록
    데이터분석
    웹크롤링
    대입 표현식
    백엔드 개발자
    오블완
    야근 지수
    Greedy
    kakao map api
    train_test_split
    프로그래머스
    파이썬
    오차행렬
    그리디 알고리즘
    solving environment
    코딩테스트
    API
    모델 성능 평가
    카카오맵
    티스토리챌린지
    Boxplot
    박스플롯
    Python
    asterisk
    바다코끼리
    confusion matrix
    2 x n 타일링
    백엔드
    카카오맵 api
    백엔드 개발자 역량
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
백준 / 12719번 / 빗물 / python 파이썬
상단으로

티스토리툴바