문제 번호 9063번 : 대지- JAVA [자바]
728x90
https://www.acmicpc.net/problem/9063
문제 설명
좌표 값을 받아서 그 점으로 그릴 수 있는 최대 직사각형을 그리고 넓이를 구하는 문제입니다.
문제 풀이
해당 좌표를 받아 직사각형을 그리면 되는데 처음에는 어떻게 직사각형을 그려야 하는지 막막하실 수 있습니다.
손으로 좌표를 그려보고 직접 사각형을 그리다 보면 x의 최댓값과 최솟값 y의 최댓값과 최솟값이 사각형의 꼭지점으로 그려진다는 것을 알 수 있습니다.
해당 규칙을 발견했다면 구현은 어렵지 않습니다.
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];
for(int i=0; i<n; i++){
x[i] = sc.nextInt();
y[i] = sc.nextInt();
}
int min_x = x[0];
int min_y = y[0];
int max_x = x[0];
int max_y = y[0];
for(int i=0; i<n; i++){
if(min_x > x[i]){
min_x = x[i];
}
if(min_y > y[i]){
min_y = y[i];
}
if(max_x < x[i]){
max_x = x[i];
}
if(max_y < y[i]){
max_y = y[i];
}
}
if(n==1){
System.out.println(0);
}else{
System.out.println((max_x-min_x)*(max_y-min_y));
}
}
}
1이 들어올 때만 넓이를 0으로 출력해주는것만 조심하면 풀 수 있는 문제입니다.
'알고리즘 > 백준 문제 및 정답' 카테고리의 다른 글
문제 번호 14215번 : 세 막대 - JAVA [자바] (1) | 2023.04.14 |
---|---|
문제 번호 10101번 : 삼각형 외우기- JAVA [자바] (0) | 2023.04.14 |
문제 번호 15894번 : 수학은 체육과목 입니다 - JAVA [자바] (0) | 2023.04.13 |
문제 번호 3009번 : 네 번째 점 - JAVA [자바] (0) | 2023.04.13 |
문제 번호 1085번 : 직사각형에서 탈출 - JAVA [자바] (0) | 2023.04.13 |