반응형
https://www.acmicpc.net/problem/14719
14719번: 빗물
첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치
www.acmicpc.net

내 코드
h, w = map(int, input().split()) blocks = list(map(int, input().split())) result = 0 for i in range(1, w-1): left_max = max(blocks[:i]) right_max = max(blocks[i+1:]) standard = min(left_max, right_max) depth = blocks[i] if standard > depth: result += (standard - depth) print(result)
Review
문제 해결을 하기 위해 제가 접근한 방식입니다.
1. 조건상 맨 앞과 끝은 절대 채울 수 없다 (0번과 맨 끝 인덱스)
2. 특정 위치를 기준으로 양옆에 가장 높은 두 개의 기둥 중에, 낮은 기둥으로 기준으로 한다.
3. 특정 위치와 2번 내용으로 얻은 기둥을 비교하여 특정 위치가 더 낮으면 물을 채운다.
그림으로 보면 다음과 같아요
예제 입력 기준으로 설명해 보겠습니다.


왜 min(left_max, right_max) 가 standrad 인지는, 아래 힌트를 보고 생각했습니다.

잘못된 부분이나, 모르는 부분은 언제든지 의견 주시면 감사하겠습니다.
반응형
'BOJ > Python' 카테고리의 다른 글
백준 7568번 덩치 파이썬 (0) | 2024.03.22 |
---|---|
백준 14502번 연구소 파이썬 BFS (0) | 2024.03.20 |
백준 1966번 프린터 큐 파이썬 (0) | 2024.03.08 |
[프로그래머스] 의상 파이썬 (1) | 2024.02.12 |
[프로그래머스] 키패드 누르기 파이썬 (2) | 2023.11.24 |