[작성일: 2023. 09. 16]
https://www.acmicpc.net/problem/2563
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[][] board = new int[100][100]; // 100*100의 도화지
int sum = 0; // 검은 영역의 넓이
for (int i = 0; i < num; 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++) {
if (board[j][k] == 0) {
board[j][k] = 1;
sum++;
}
}
}
}
System.out.println(sum);
}
}
이 문제를 어떻게 풀어야할지 감이 안 와서 Chat GPT의 도움을 조금 받았다.
색종이를 붙일 때마다 그 영역을 1로 채운다고 생각하면 쉽게 접근할 수 있다고 해서 도화지 100*100 크기의 배열을 만들었다.
색종이는 for문의 시작을 x와 j부터 한다면 떨어진 위치에서부터 1을 채울 수 있고, 색종이 크기가 10*10이기 때문에 +10을 해주었다.
board[j][k]가 0이라면 색종이가 겹쳐지지 않은 부분이므로 1로 변경하고 sum에 1을 더해준다.
for문이 끝나고 나면 sum은 1로 표시된 칸의 개수만큼 증가한다.