문제

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

코드

import java.util.Scanner;

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

        int[][] arr = new int[100][100];

        int count = 0;

        for (int i = 0; i < n; i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();

            for (int j = x; j < x + 10; j++) {
                for (int k = y; k < y + 10; k++) {
                    arr[j][k] = 1;
                }
            }
        }

        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                if (arr[i][j] == 1) {
                    count++;
                }

            }
        }
        System.out.println(count);
    }
}

풀이

도형을 보여주니 고민을 많이하게 된 문제이다. 하지만 이차원배열 문제라는 것을 깨닫고 보면 매우 쉬운문제이다. 가로세로가 100인것에 가로세로10인것을 넣어주니 한칸당 1의 크기를 가지고 있다고 생각해보자. 이차원배열을 100*100을 만들어 각 색종이가 지나는 좌표 즉 인덱스를 모두 1로 바꾸고 1인것당 값을 세주면 겹치더라도 상관이 없게 된다.

+ Recent posts