ALGORITHM/BOJ
[IM 대비] BOJ_2669 직사각형 네 개의 합집합의 면적 구하기
lemon-scone
2021. 8. 23. 20:34
https://www.acmicpc.net/problem/2669
2669번: 직사각형 네개의 합집합의 면적 구하기
입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각
www.acmicpc.net
package IM;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 직사각형 네 개의 합집합의 면적 구하기
class Pair{
int x1;
int y1;
int x2;
int y2;
public Pair() {
super();
}
public Pair(int x1, int y1, int x2, int y2) {
super();
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
}
public class BOJ_2669 {
public static int[][] map = new int[101][101];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
Pair pair = new Pair();
Pair[] p = new Pair[4];
for (int i = 0; i < 4; i++) {
st = new StringTokenizer(br.readLine(), " ");
p[i].x1 = Integer.parseInt(st.nextToken());
p[i].y1 = Integer.parseInt(st.nextToken());
p[i].x2 = Integer.parseInt(st.nextToken());
p[i].y2 = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < 4; i++) {
for (int j = p[i].x1; j <= p[i].x2; j++) {
for (int k = p[i].y1; k <= p[i].y2; k++) {
map[j][k] = 1;
}
}
}
int cnt = 0;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (map[i][j]==1) {
cnt++;
}
}
}
System.out.println(cnt);
}
}
package IM;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 직사각형 네 개의 합집합의 면적 구하기
public class BOJ_2669_sol {
public static int[][] map = new int[101][101];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
boolean map[][] = new boolean[101][101];
int result = 0;
for (int i = 0; i < 4; i++) {
st = new StringTokenizer(br.readLine(), " ");
int lx = Integer.parseInt(st.nextToken());
int ly = Integer.parseInt(st.nextToken());
int rx = Integer.parseInt(st.nextToken());
int ry = Integer.parseInt(st.nextToken());
for (int y = ly; y < ry; y++) {
for (int x = lx; x < rx; x++) {
if(!map[y][x]) {
map[y][x] = true;
result++;
}
}
}
}
System.out.println(result);
}
}