코딩테스트/백준
[BJ] 2563. 색종이
jhk828
2021. 2. 9. 22:39
2563. 색종이
2563번: 색종이
첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변
www.acmicpc.net
import java.io.*;
import java.util.*;
// 210209
public class Main_2563_색종이 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[101][101];
int area = 0;
for (int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine(), " ");
int x = Integer.parseInt(st.nextToken()); // X 좌표
int y = Integer.parseInt(st.nextToken()); // Y 좌표
for (int j = 0; j < 10; j++) {
for (int k = 0; k <10; k++) {
if (arr[x+j][y+k] == 1) continue;
arr[x+j][y+k] = 1;
++area;
}
}
}
System.out.println(area);
br.close();
} // main
}
1. 처음에는 조합으로 생각했다.
N개 중 2개를 뽑는 조합을 만들어서 -> 겹치는 부분의 넓이를 구하는 함수를 짜서 -> 빼주었다.
테스트 케이스는 맞았으나 오답인걸로 보아, 2개가 아니라 여러 개가 겹치는 경우를 고려하지 못해서 그런 것 같다.
2. 그러나 N의 크기가 크지 않다.
2차원 배열을 만들어서 이미 넓이에 포함시킨 좌표이면 지나가고
처음 방문하는 좌표이면 넓이++를 하도록 다시 작성하였다.