[백준] 9063번 - 대지 (java)

팥빵·2025년 8월 21일

Baekjoon

목록 보기
27/49
post-thumbnail

N개의 좌표를 받고, 그 좌표를 모두 포함하는 최소 직사각형의 넓이를 묻는 문제이다.

배열을 써야하나? 그럼 어떻게 쓰는거지? 라고 오랜시간 고민했지만 그보다 훨씬 쉬운 방법이 있었다.

int maxX = -10000;
int maxY = -10000;
int minX = 10000;
int minY = 10000;

위처럼, 먼저 최댓값, 최솟값을 지정 한 후
나중에 값을 받은것과 비교하여 갱신하면 된다.

포인트는 max value에 최소숫자를 넣고, min value에 최대숫자를 넣는다는 점이다.

아래는 위 정보를 바탕으로 설계된 코드이다.

import java.util.*;

class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        
        int maxX = -10000;
		int maxY = -10000;
		int minX = 10000;
		int minY = 10000;
        
        for(int i=0; i<N; i++){
        	int x = sc.nextInt();
            int y = sc.nextInt();
            
            if(maxX < x){ maxX = x; }
            if(minX > x){ minX = x; }
            if(maxY < y){ maxY = y; }
            if(minY > y){ minY = y; }
        }
        
        int width = maxX - minX;
        int height = maxY - minY;
        System.out.println(width * height);
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글