본문 바로가기
알고리즘 문제풀이

[Backjoon] 2669번 문제 - 직사각형 네개의 합집합의 면적 구하기

by 마스터누누 2017. 7. 8.
728x90
반응형

평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으며, 변이나 꼭지점이 겹칠 수도 있다.

이 직사각형들이 차지하는 면적을 구하는 프로그램을 작성하시오.


풀이


첫 꼭지점에서 끝 꼭지점까지 순환문을 돌면서 boolean 배열에 true 값을 넣어준다.

겹치는 부분은 어차피 true이기 때문에 중복이 발생하지 않는다.

최종적으로 true인 값의 갯수를 새어준다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Scanner;
 
/**
 * Created by homr on 2017. 7. 8..
 */
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        boolean[][] arr = new boolean[101][101];
        int x1, y1, x2, y2;
        int total = 0;
 
        for(int i=0; i<4; i++){
            x1 = sc.nextInt();
            y1 = sc.nextInt();
            x2 = sc.nextInt();
            y2 = sc.nextInt();
 
 
            for(int j = y1; j<y2; j++){
                for(int k = x1; k<x2; k++){
                    arr[j][k] = true;
                }
            }
 
        }
 
        for(int j = 0; j<101; j++){
            for(int k = 0; k<101; k++){
                if(arr[j][k]==true){
                    total++;
                }
            }
        }
 
        System.out.println(total);
    }
}
 
cs


반응형

댓글