문제
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 x, y, w, h가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다.
제한
- 1 ≤ w, h ≤ 1,000
- 1 ≤ x ≤ w-1
- 1 ≤ y ≤ h-1
- x, y, w, h는 정수
(구상)
좌표축을 생각했을때
다음과 같은 형태로 좌표가 존재한다고 생각하자.
그러면 최단거리는 점(x,y)가 x축가 만나는 거리 ,
y축과 만나는거리, 직사각형의 나머지 가로 또는 세로와 만나는 거리를 고려해 주면 된다.
이들 네가지를 구하여 최솟값을 출력해 주면 된다.
1.x축과의 거리 : x
2.y축과의 거리 : y
3.축에 닿지 않은 가로까지의 거리 : w-y
4.축에 닿지 않은 세로 까지의 거리 : k-x
코드
package codingTest;
// 백준 1085 직사각형 탈출 문제
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Algorithm9 {
static int disteance(int x, int y, int w, int h) {
int arr[] = { x, y, w - x, h - y };
Arrays.sort(arr);
return arr[0];
}
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
System.out.println(disteance(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()),
Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())));
}
}
'JAVA > JAVA Algorithm' 카테고리의 다른 글
[백준] 2839번 설탕배달 - 나눗셈 알고리즘 문제 (0) | 2022.08.23 |
---|---|
[백준] 5086번 배수와 약수 (0) | 2022.08.22 |
[백준]10815번 숫자카드 (0) | 2022.08.21 |
[백준] 2750번 수 정렬하기 (0) | 2022.08.21 |
[백준] 2798번 블랙잭 - 자바 (0) | 2022.08.21 |