본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 2563번: 색종이 [Java]

문제: https://www.acmicpc.net/problem/2563

 

2563번: 색종이

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변

www.acmicpc.net

1. 코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		boolean[][] board = new boolean[100][100];
		while(N-- > 0) {
			int w = sc.nextInt();
			int h = sc.nextInt();
			for(int i = w; i - w < 10; i++) {
				for(int j = h; j - h < 10; j++)
					board[i][j] = true;
			}
		}
		
		int sum = 0;
		for(int i = 0; i < board.length; i++) {
			for(int j = 0; j < board.length; j++) {
				if(board[i][j])
					sum++;
			}
		}
		System.out.println(sum);
	}
}

2. 설명

boolean 2차원 배열을 통해서 흰색부분을 false로 검은색 부분을 true로 지정하여 true의 수는 검은 색종이의 넓이이기에 true의 수를 구하면 쉽게 해결됩니다.