카테고리 없음

[알고리즘 문제 풀이] 14719번 빗물 (구현)

컴맹 개발자 2024. 11. 16. 17:45

https://www.acmicpc.net/problem/14719

 




import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;


public class Main {

    static int H,W;
    static int puddleCount;
    static boolean flag;
    static int[][]arr;

    static int ans;
    


    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st =new StringTokenizer(br.readLine());

        H = Integer.parseInt(st.nextToken());
        W = Integer.parseInt(st.nextToken());

        //arr[H][W]

        arr = new int[H][W];

        st = new StringTokenizer(br.readLine());
        for(int i=0;i<W;i++){
            int rainH = Integer.parseInt(st.nextToken());

            for(int j=0;j<rainH;j++){
                arr[H-1-j][i]=1;
            }
        }

        ans=0;
        
        for(int i=H-1;i>=0;i--){
            flag=false; // true면 블럭이 있음.
            puddleCount=0;
            for(int j=0;j<W;j++){

                if(arr[i][j]==1){
                    flag=true;

                    if(puddleCount!=0) {
                        ans+=puddleCount;
                        puddleCount=0;
                    }
                }
                else if (arr[i][j]==0 && (flag) ){
                    puddleCount++;
                }
            }
        }

        System.out.println(ans);

    }

}