[Java] 백준 2563번: 색종이

U·2023년 8월 9일

백준

목록 보기
40/116

문제


일단 생각하기!

  • 예전에 푸려다가 풀지 않았던 문젠데 과제로 나오다니 😅
  • 100x100 크기의 boolean 타입의 배열을 선언하여 받은 좌표에서 10을 더한 좌표까지 체크되지 않았으면 체크를 해주고 sum++ 해준다.

풀이

package BJ;

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

/**
 * 
 * @author 김유나
 * 2023-08-09
 * [문제] 백준 2563번 색종이
 * - 가로, 세로의 길이가 각각 100인 정사각형의 흰색 도화지 위에 N개만큼의 가로, 세로 크기가 각각 10인 정사각형 검정색 색종이를 붙인다.
 * - 이때, 색종이가 붙은 검은 영역의 넓이를 구해라.
 * [아이디어]
 * - 100x100 크기만큼의 boolean 배열을 만들어 해당하는 영역을 true로 하여 sum을 구한다.
 * 메모리 : 14,224kb 실행 시간 : 128ms
 * 
 */
public class BJ_2563_색종이_김유나 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine()); // 색종이의 수
		boolean paper[][] = new boolean[101][101]; // 도화지의 넓이 배열
		int sum = 0; // 검은 영역 넓이
		
		for (int i = 0; i < N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int x = Integer.parseInt(st.nextToken());
			int y = Integer.parseInt(st.nextToken());
			
			for (int j = x; j < x + 10; j++) {
				for (int k = y; k < y + 10; k++) {
					if(!paper[j][k]) { // 체크된 영역이 아니라면
						paper[j][k] = true; // 체크
						sum++; // 후 넓이 더하기
					}
				}
			}
		}
		
		System.out.println(sum);
	}
}
profile
백엔드 개발자 연습생

0개의 댓글