// 직사각형 네개의 합집합의 면적 구하기
package Silver_V_5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Ex2669 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int[][] arr = new int[101][101];
for (int i = 0; i < 4; i++) {
st = new StringTokenizer(br.readLine());
int x1 = Integer.parseInt(st.nextToken());
int y1 = Integer.parseInt(st.nextToken());
int x2 = Integer.parseInt(st.nextToken()) - 1;
int y2 = Integer.parseInt(st.nextToken()) - 1;
for (int j = y1; j <= y2; j++) {
for (int k = x1; k <= x2; k++) {
arr[j][k] = 1;
}
}
}
int sum = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
sum += arr[i][j];
}
}
System.out.println(sum);
}
}
좌표의 최대 위치까지 배열을 선언한 후에 직사각형의 면적인 곳은 1이 되도록 했다. 처음에 int형 배열로 선언해서 그대로 int형 배열을 사용했지만, boolean 배열을 사용했으면 성능적으로 더 좋지 않았을까 싶다.
위처럼 문제를 푸는 경우 주의할 점은 좌표를 입력 받는 것이기 때문에 x2, y2에 한 것 처럼 -1씩 해줘야 면적의 개수와 같아진다.
'백준 풀이 > 자바(Java)' 카테고리의 다른 글
백준 1592 자바 - 영식이와 친구들 (0) | 2024.06.12 |
---|---|
백준 2621 자바 - 카드게임 (0) | 2024.06.11 |
백준 6811 자바 - Old Fishin’ Hole (1) | 2024.06.09 |
백준 10867 자바 - 중복 빼고 정렬하기 (0) | 2024.06.08 |
백준 28353 자바 - 고양이 카페 (0) | 2024.06.07 |