본문 바로가기

알고리즘 문제풀이/백준

[BOJ][JAVA]2563 - 색종이

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

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net

 

문제

 

설명

넓이를 일일히 구하는 것이 아니라, 심플하게 1X1 짜리 검정 도화지가 100X100 흰색 도화지 위에 몇 개 있는지만을 셌습니다.

white[100][100]의 모든 요소의 값은 0으로 채워져 있다가, 입력값에 따라 검정 도화지로 덮여지는 부분들을 1로 바꾼 후 마지막에 1의 값이 들어 있는 요소의 갯수를 세는 방식으로 풀었습니다.

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ2563_Paper {

	public static void main(String[] args) throws Exception {
		int[][] white = new int[100][100];
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(br.readLine());
		StringTokenizer st;
		for(int i=0; i<num; i++) {
			st=new StringTokenizer(br.readLine());
			int x = Integer.parseInt(st.nextToken())-1; //인덱스는 0부터 시작하므로
			int y = Integer.parseInt(st.nextToken())-1;
			
			for(int j=x; j<x+10; j++) {
				for(int k=y; k<y+10; k++) {
					white[j][k]=1;
				}
			}
		}
		int cnt=0;
		for(int i=0; i<100; i++) {
			for(int j=0; j<100; j++) {
				if(white[i][j]==1)
					cnt++;
			}
		}
		System.out.println(cnt);
	}

}