문제풀이
[백준] 14719 빗물 - Java
자르비옹스
2022. 1. 29. 00:26
https://www.acmicpc.net/problem/14719
14719번: 빗물
첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치
www.acmicpc.net
풀이는 간단하다.
현재 인덱스 기준으로 왼쪽, 오른쪽 각각 가장 높은 층을 구한 뒤, 차이를 더해준다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int H = Integer.parseInt(st.nextToken());
int W = Integer.parseInt(st.nextToken());
int[] arr = new int[W];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < W; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int answer = 0;
for (int i = 1; i < W-1; i++) {
int left = 0;
int right= 0;
int cIdx = i;
while(cIdx > 0) {
// 왼쪽 찾기
left = Math.max(left, arr[--cIdx]);
}
cIdx = i;
while(cIdx < W-1) {
// 오른쪽 찾기
right = Math.max(right, arr[++cIdx]);
}
int temp =Math.min(left, right) - arr[i];
answer += temp > 0 ? temp : 0;
}
System.out.println(answer);
}
}