[작성일: 2023. 10. 01]
https://www.acmicpc.net/problem/1085
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 현재 위치
int x = sc.nextInt();
int y = sc.nextInt();
// 오른쪽 위 꼭짓점
int w = sc.nextInt();
int h = sc.nextInt();
int minX = Math.min(x - 0, Math.abs(x - w));
int minY = Math.min(y - 0, Math.abs(y - h));
int distance = Math.min(minX, minY);
System.out.println(distance);
}
}
이번 문제는 Math 클래스만 사용해도 풀 수 있었다.
x와 y의 위치에서 위(w,h)가 더 가까운지, 아니면 아래 (0,0)가 더 가까운지 계산하면 쉬운 문제였다.
Math클래스의 min으로 위와 아래 중에 어디가 더 가까운지(어디가 더 최솟값인지) 구해놓고,
x-w나 y-h는 마이너스 값이 나올 수 있기 때문에 abs을 사용해 절대값(양수)으로 변환했다.
그 다음 다시 minX와 minY을 min으로 구하면 그게 현재 위치에서 직사각형의 경계까지 제일 가까운 거리가 된다.