백준 - JAVA/2차원 배열

[백준] 2563번 : 색종이 _ JAVA ( 주석 설명 )

wch_s 2023. 2. 3. 23:10

1번

→ boolean 2차원 배열을 활용해, 검은 색종이 영역 구하기

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; //토크나이저를 이용해 입력을 받는다.

        boolean[][] paper = new boolean[101][101]; //도화지의 크기가 가로, 세로의 크기가 각각 100이므로 다음과 같은 배열을 생성해준다.

        int T = Integer.parseInt(br.readLine()); //색종이의 개수를 입력받는다.

        for(int i=0;i<T;++i){
            st = new StringTokenizer(br.readLine());
            int row = Integer.parseInt(st.nextToken()); //색종이의 가로를 입력받는다.
            int column = Integer.parseInt(st.nextToken()); //색종이의 세로를 입력받는다.

            for(int a=row;a<row+10;++a){ //색종이의 크기는 10*10이다.
                for(int b=column;b<column+10;++b){
                    paper[a][b] = true; //색종이에 의해 가려진 검은 영역을 true 로 바꿔준다.
                }
            }
        }

        int area = 0; // 검은 영역의 넓이 변수이다.
        for(int i=0;i<=100;++i){ //도화지의 크기만큼 전부 탐색해, 검은 영역을 찾아낸다.
            for(int j=0;j<=100;++j){
                if(paper[i][j]) //가려진 검은 영역의 넓이를 카운트 해준다.
                    ++area;
            }
        }

        System.out.println(area); //검은 영역을 출력한다.
    }
}