2669. 직사각형 네개의 합집합의 면적 구하기 (JAVA)
A A

[백준] 2669. 직사각형 네개의 합집합의 면적 구하기

 time

50분

📌 Algorithm

구현

⏲️Time Complexity

100ms

📍 Logic

  1. 최대 크기가 100이므로 100*100인 2차원 배열을 만들어 주었다.
  2. 평면이 곧 2차원 배열이고, 좌표값이 인덱스라고 생각
  3. 직사각형의 범위 내에 있는 인덱스에 색칠(1)하기
            for (int j = 0; j < 100; j++) {
                for (int k = 0; k < 100; k++) {
                    if (x1 <= j && j < x2 && y1 <= k && k < y2) {
                        arr[j][k] = 1;
                    }
                }
            }
  1. 1인 인덱스 수 세기
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                if (arr[i][j] == 1) {
                    count++;
                }
            }
        }

✒️ Review

  • 로직을 떠올린 후 코드로 구현하는 것은 의외로 어렵지 않았다. 야호!

📡Link

 

 

import java.io.*;
import java.util.Iterator;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

//        StringTokenizer st = new StringTokenizer(bf.readLine());
        int x1 = 0;
        int y1 = 0;
        int x2 = 0;
        int y2 = 0;
        
        
        int[][] arr = new int[100][100];
        int count = 0; //방문하면 1로 처리
        

        for (int i = 0; i < 4; i++) {
            StringTokenizer st = new StringTokenizer(bf.readLine());
            x1 = Integer.parseInt(st.nextToken());
            y1 = Integer.parseInt(st.nextToken());
            x2 = Integer.parseInt(st.nextToken());
            y2  = Integer.parseInt(st.nextToken());
            
            for (int j = 0; j < 100; j++) {
                for (int k = 0; k < 100; k++) {
                    if(x1<= j && j <x2 && y1<=k && k<y2) {
                        arr[j][k] = 1;
                    }
                } 
            }
        }    
        
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                if (arr[i][j] ==1) {
                    count++;
                }
            }
        }
        
        System.out.println(count);

    }

}
Copyright 2024. GRAVITY all rights reserved