본문 바로가기

ALGORITHM

백준 14719 빗물 (Java)

1. 문제 링크

 

14719번: 빗물

첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

  1. 해당 블록 기준으로 왼쪽 전부 중 최대 높이 블록, 오른쪽 전부 중 최대 높이 블록을 구한다.
  2. 둘 중 작은 높이가 기준이 되는 블록보다 작은 경우에만 물이 고인다.

 

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