2563 색종이 문제 링크
문제분석
- 가로, 세로가 각각 100인 정사각형의 흰색 도화지에
가로, 세로가 각각 10인 정사각형의 검은색 색종이를
색종이 변과 도화지 변이 평행하도록 붙임
- 색종이가 붙은 검은 영역의 넓이를 구하라

- ex) 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260임
제약 사항
입력 조건
- 첫째 줄 : 색종이의 수 N (1 ≤ N ≤ 100)
- 둘째 줄 : 색종이를 붙인 위치
- 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리
- 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리
출력 조건
#1
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int N = sc.nextInt();
int[][] arr = new int[N][2];
int answer = 100 * N;
for(int i=0; i<N; i++) {
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
}
for(int j=0; j<N-1; j++) {
for(int i=j+1; i<N; i++) {
if(arr[j][0] + 10 > arr[i][0] && arr[j][0] < arr[i][0] + 10) {
if(arr[i][1] + 10 > arr[j][1] && arr[i][1] < arr[j][1] + 10) {
System.out.println("before" + answer + " " + i + j);
answer -= ((arr[j][0] + 10) - arr[i][0]) * ((arr[i][1] + 10) - arr[j][1]);
System.out.println("after" + answer);
}
}
}
}
System.out.println(answer);
}
}

- 색종이 3개 이상 겹치는 경우를 생각 안 함
- 이런 식으로 하려면 색종이가 몇 개 얼만큼 겹치는지 다 구해야 됨
- 엄청 복잡해짐..
#2
- 다른 블로그 살짝 훔쳐봄,,.,.,
- 길이가 100 100인 이줄 배열 선언해서
- 색종이가 붙어있는 부분만 1을 넣어줌
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int N = sc.nextInt();
int[][] quad = new int[101][101];
int[][] arr = new int[N][2];
int answer = 0;
for(int i=0; i<N; i++) {
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
}
for(int i=0; i<N; i++) {
for(int a=0; a<10; a++) {
for(int b=0; b<10; b++) {
quad[arr[i][0]-1+a][arr[i][1]-1+b] = 1;
}
}
}
for(int i=0; i<100; i++) {
for(int j=0; j<100; j++) {
answer += quad[i][j] == 1 ? 1 : 0;
}
}
System.out.println(answer);
}
}
