티스토리 뷰
2563. 색종이
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차원 배열을 만들어서 이미 넓이에 포함시킨 좌표이면 지나가고
처음 방문하는 좌표이면 넓이++를 하도록 다시 작성하였다.
'코딩테스트 > 백준' 카테고리의 다른 글
[BJ] 16926. 배열 돌리기1 (0) | 2021.02.11 |
---|---|
[BJ] 2577. 숫자의 개수 (0) | 2021.02.09 |
[BJ] 1158. 요세푸스 문제 (0) | 2021.02.09 |
[BJ] 2164번: 카드 2 (0) | 2021.02.08 |
[BJ] 2493 탑 (0) | 2021.02.04 |
댓글