반응형
문제
평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으며, 변이나 꼭짓점이 겹칠 수도 있다.
이 직사각형들이 차지하는 면적을 구하는 프로그램을 작성하시오.
입력
입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각형의 오른쪽 위 꼭짓점의 x좌표, y좌표이다. 모든 x좌표와 y좌표는 1이상이고 100이하인 정수이다.
출력
첫 줄에 네개의 직사각형이 차지하는 면적을 출력한다.
예제 입력 1
1 2 4 4
2 3 5 7
3 1 6 5
7 3 8 6
예제 출력 1
26
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static BufferedReader bf;
private static StringTokenizer st;
private static int sX, sY, eX, eY;
private static int [][] map;
static class Rectangle {
int startX, startY, endX, endY;
public Rectangle(int startX, int startY, int endX, int endY) {
super();
this.startX = startX;
this.startY = startY;
this.endX = endX;
this.endY = endY;
}
@Override
public String toString() {
return "Rectangle [startX=" + startX + ", startY=" + startY + ", endX=" + endX + ", endY=" + endY + "]";
}
}
public static void main(String[] args) throws IOException {
Rectangle [] rectangle=new Rectangle[4];
bf=new BufferedReader(new InputStreamReader(System.in));
int maxVal=0;
for(int i=0;i<4;i++) {
st=new StringTokenizer(bf.readLine());
sX=Integer.parseInt(st.nextToken());
sY=Integer.parseInt(st.nextToken());
eX=Integer.parseInt(st.nextToken());
eY=Integer.parseInt(st.nextToken());
maxVal=Math.max(maxVal, eX);
maxVal=Math.max(maxVal, eY);
rectangle[i]=new Rectangle(sX, sY, eX, eY);
}
map=new int[maxVal][maxVal];
for(int i=0;i<4;i++) {
for(int r=rectangle[i].startX;r<rectangle[i].endX;r++) {
for(int c=rectangle[i].startY;c<rectangle[i].endY;c++) {
map[r][c]=1;
}
}
}
int result=0;
for(int r=0;r<maxVal;r++) {
for(int c=0;c<maxVal;c++) {
if(map[r][c]==1) result++;
}
}
System.out.println(result);
}
}
반응형
'코딩테스트 > 구현(Implementation)' 카테고리의 다른 글
[Java] 백준 2628번 : 종이자르기 (0) | 2022.02.26 |
---|---|
[Java] 백준 2559번 : 수열 (0) | 2022.02.26 |
[Java] 백준 10158번 : 개미 (0) | 2022.02.25 |
[Java] 백준 10163번 : 색종이 (0) | 2022.02.25 |
[Java] 백준 2491번 : 수열 (0) | 2022.02.25 |