히콩쓰 개발 일지
[CT_Java] 백준 2563_색종이 본문
백준의 Silver5_2563_색종이 문제를 풀었다.
https://www.acmicpc.net/problem/2563
처음에는 수학적 사고로 접근했다.
x축끼리 뺐을 때, y축끼리 뺐을 때 등 다양한 상황을 고려해야 해서 구현에 실패했다.
하지만, 넓이를 구하는 문제는 그렇게 하지 않아도 된다는 "준영" 님의 피드백을 받았다.
이 문제는, 2차원 배열을 선언해서 한 칸씩 칠해가는 방식으로 접근하면 된다고 말씀해주셨다.
그래서, 흰색 도화지가 100 * 100 이므로 101씩 boolean 타입으로 선언해주고, 이는 기본값이 False
이니 x, y 좌표에 해당하는 index를 true로 표시하고 칸당 넓이 1로 계산하여 sum을 더해주었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
boolean arr[][] = new boolean[101][101];
int x = 0;
int y = 0;
int sum = 0;
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
x = Integer.parseInt(st.nextToken());
y = Integer.parseInt(st.nextToken());
for (int j = x; j < x + 10; j++) {
for (int k = y; k < y + 10; k++) {
if (!arr[j][k]) {
arr[j][k] = true;
sum++;
}
}
}
}
System.out.println(sum);
}
}
접근 방법에 대해 많은 고민을 하게 되었다. 휴