본문 바로가기
Baekjoon 자바 코드/2차원 배열

[백준] 2563번 색종이 풀이 코드 (Java 자바)

by 망댕이 2024. 6. 11.
반응형

 

접근 방법)

int 형의 [100][100]의 배열을 생성한다. 그리고 for문을 이용하여 색종이를 붙인 위치에 해당하는 배열들을 값을 1로 변경한다.

마지막으로 한 번 더 for문을 만들어 [100][100]의 배열 하나하나 값을 검사하도록 하고, for문 안에 if문을 추가하여 배열의 값이 1일 때 result 값(최종적으로 출력할 값)에 1씩 더하여 출력을 한다.

 

처음에는 첫째 줄에 입력한 색종이 수 X 100에서 겹쳐있는 부분들을 빼는 코드를 작성해보려 했지만 너무 복잡하고 어려워 방법을 변경하였다.

 

정답 코드 1)

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int[][] paper = new int[100][100];
        int num = sc.nextInt();
        int result = 0;

        for(int i = 0; i < num; i++){
            int a = sc.nextInt();
            int b = sc.nextInt();

            for(int j = a; j < a+10; j++){
                for(int k = b; k < b+10; k++){
                    paper[j][k] = 1;
                }
            }
        }
        for(int l = 0; l < 100; l++){
            for(int m = 0; m < 100; m++){
                if(paper[l][m] == 1){
                    result++;
                }
            }
        }
        System.out.println(result);
    }
}

 

색종이를 붙인 부분에 해당하는 배열에 값을 1로 설정하고 나중에 for문과 if문을 통해 값이 1인 총 배열 수(즉 색종이 넓이에 해당)를 구하는 것이 핵심이라고 생각한다.

반응형