백준 / 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
  • 전체
    오늘
    어제
    • 분류 전체보기 (350) N
      • 코딩테스트 (238)
        • programmers (python) (159)
        • 백준 (python) (77)
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (21)
        • Python (4)
        • Java | Spring (8)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (16) N
        • Network (6) N
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (14) N
  • 블로그 메뉴

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

    • GitHub
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바