가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 둘레의 길이를 구하는 프로그램을 작성하시오.
예를 들어 흰색 도화지 위에 네 장의 검은색 색종이를 밑의 그림과 같은 모양으로 붙였다면 검은색 영역의 둘레는 96 이 된다.

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다.
첫째 줄에 색종이가 붙은 검은 영역의 둘레의 길이를 출력한다.
결국 둘레의 길이는 제일 바깥쪽의 사각형들의 둘레의 길이니까 안으로 들어가 있는 사각형을 다 밖으로 빼서 전체를 크게 만든다. 근데 문제는 안쪽의 작은 부분은 어떻게 처리하느냐!
숫자를 입력 받고 제일 작은 수와 제일 큰 수를 구해야 될 것 같음.
-> 이 접근은 틀린 방식이었다. 예제의 그림에만 해당하는 내용이고 그림이 어디에 위치하느냐에 따라 불가능할수도
boolean 타입으로 2차 배열 만든다
먼저 사각형을 true 값으로 받는다.
다시 for문 돌면서 true인 값들의 상하좌우를 살핀다.
거기에 false값이 있다면 count 하나를 증가시킨다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean[][] arr = new boolean[103][103];
int cnt = 0; // 총 둘레
int num = sc.nextInt(); // 몇 번 입력 받을지
for(int a=0; a<num;a++){
int x = sc.nextInt();
int y = sc.nextInt();
for(int i=x;i<x+10;i++){
for(int j=y;j<y+10;j++){
arr[i][j] = true; // 색종이 있는 곳은 전부 true
}
}
}
// 둘레 구하기
for(int i=0;i<101;i++){
for(int j=0;j<101;j++){
if(arr[i][j]==true){
if(arr[i-1][j]==false) cnt+=1;
if(arr[i+1][j]==false) cnt+=1;
if(arr[i][j-1]==false) cnt+=1;
if(arr[i][j+1]==false) cnt+=1;
}
}
}
System.out.println(cnt);
}
}