Java/백준알고리즘

[Java] 백준알고리즘 #9063 대지

Sehyeok20 2023. 9. 26. 15:44
반응형

백준알고리즘 #9063 대지
백준알고리즘 #9063 대지

간단히 말해 x,y 좌표 위의 점들을 포함하는 가장 작은 사각형의 면적을 구하는 문제이다.

조건에서 동서, 남북으로 평행한 네 변을 가지는 사각형을 구하는 것이라고 했으니 더욱 간단해진다.

좌표 위에서 직사각형의 넓이는 (x2-x1) x (y2-y1) 이 되므로 구슬이 있는 지점들의 최대값을 x2, y2에, 최소값을 x1, y1에 저장하면 된다.

 

코드를 보면 다음과 같다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] x = new int[n];
        int[] y = new int[n];
        int xmin = 10000;
        int xmax = -10000;
        int ymin = 10000;
        int ymax = -10000;
        int area = 0;
        for (int i = 0; i < n; i++) {
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
            if (xmin > x[i]) {
                xmin = x[i];
            }
            if (ymin > y[i]) {
                ymin = y[i];
            }
            if (xmax < x[i]) {
                xmax = x[i];
            }
            if (ymax < y[i]) {
                ymax = y[i];
            }
        }
        area = (xmax - xmin) * (ymax - ymin);
        System.out.println(area);
        sc.close();

    }
}

문제에 명시된 대로 좌표의 범위가 10000부터 -10000까지 제한되므로 최소값을 10000, 최대값을 -10000으로 초기화 한 뒤, 루프를 반복하면서 최소값과 최대값을 비교하여 저장한 후, 직사각형의 넓이를 구하면 된다.

반응형