백준 2563 색종이 (자바 Java)

백준 2563 색종이

문제 정보

백준 2563 색종이 (자바 Java)
  • 문제 출처 : 백준 Baekjoon
  • 문제 번호 : 2563
  • 문제 제목 : 색종이
  • 문제 난이도 : 실버5
  • 풀이 언어 : Java

문제

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

접근

이중 for 문을 활용해 문제를 풀었다.

풀이

  • 100×100 크기의 2차원 boolean 배열을 초기화합니다.
  • 색종이 개수(n)을 입력 받습니다.
  • 각 색종이에 대해 좌표(x, y)를 입력 받고, 해당 위치에 색종이를 붙입니다 (값을 true로 변경).
  • 모든 배열 요소를 순회하며 true인 요소의 개수를 세어 면적을 계산합니다.
  • 최종 면적을 출력합니다.

후기

2차원 배열 문제를 더 풀어볼 계획이다.

코드

Java
import java.util.Scanner;

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

	        boolean[][] paper = new boolean[100][100];
	        int n = sc.nextInt();

	        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++) {
	                    paper[j][k] = 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);
	}
}
Java

Leave a Comment