1. 문제 링크
2. 문제 및 입출력예제
3. 문제 풀이
- 해당 블록 기준으로 왼쪽 전부 중 최대 높이 블록, 오른쪽 전부 중 최대 높이 블록을 구한다.
- 둘 중 작은 높이가 기준이 되는 블록보다 작은 경우에만 물이 고인다.
4. 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split(" ");
int W = Integer.parseInt(split[1]);
int[] rain = new int[W];
split = br.readLine().split(" ");
for(int i=0;i<W;i++) {
rain[i] = Integer.parseInt(split[i]);
}
int left, right, result = 0;
for(int i=1;i<W-1;i++) {
left = 0;
right = 0;
for(int j=0;j<i;j++) {
left = Math.max(rain[j], left);
}
for(int j=i;j<W;j++) {
right = Math.max(rain[j], right);
}
if(rain[i]<left && rain[i]<right) {
result += Math.min(left, right) - rain[i];
}
}
System.out.println(result);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 10814 나이순 정렬 (Java) (0) | 2023.04.20 |
---|---|
백준 10773 제로 (Java) (0) | 2023.04.19 |
백준 2636, 2638 치즈 (Java) (0) | 2023.04.18 |
백준 12865 평범한 배낭 (Java) (0) | 2023.04.18 |
백준 2206 벽 부수고 이동하기 (Java) (0) | 2023.04.17 |