https://www.acmicpc.net/problem/9063

 

9063번: 대지

첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. 

www.acmicpc.net


간단하다.

 

각 점들의 좌표를 받고, 각 점들 중 가장 작은 x 좌표값과 가장 큰 x 좌표값의 차이가 임씨가 받을 수 있는 대지의 가로 너비이다. 마찬가지로 각 점들 중 가장 작은 y 좌표값과 가장 큰 y 좌표값의 차이가 대지의 세로 너비이다.

 

그렇다면, 대지의 면적을 계산하기 위해서 좌표를 받는동안 x 좌표와 y 좌표의 최대와 최소를 찾으면 된다.

그 후, 가로 너비와 세로 너비를 구해 곱하면 임씨가 돌려받은 대지의 면적이 된다.

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

public class Main {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		int minX = 10001;
		int maxX = -10001;
		
		int minY = 10001;
		int maxY = -10001;
		
		for(int i=0; i<N; i++)
		{
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			int x = Integer.parseInt(st.nextToken());
			int y = Integer.parseInt(st.nextToken());
			
			if(x > maxX)
				maxX = x;
			if(x < minX)
				minX = x;
			if(y > maxY)
				maxY = y;
			if(y < minY)
				minY = y;
		}
		
		int area = (maxX - minX) * (maxY - minY);
		System.out.print(area);
	}
}

  • 느낀 점

간단하다.