[JAVA] 백준 1085번 : 직사각형에서 탈출
in Blog / Algorithm / Bronze III / Bronze-iii on Algorithm, Baekjoon, Bronze
안녕하세요, 해을입니다🦖
이번 글에서는 백준 1085번 : 직사각형에서 탈출 문제에 대해 알아보겠습니다!
💡 문제
한수는 지금 (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는 정수
💡 예제 입력 1
6 2 10 3
💡 예제 출력 1
1
🚩 문제 풀이
[주어진 값]
- 한수의 x 좌표 : x
- 한수의 y 좌표 : y
- 직사각형의 가로 길이 : w
- 직사각형의 세로 길이 : h
[구해야 할 값]
- 직사각형의 경계선까지 가는 거리의 최솟값
직사각형의 경계선으로 가는 방법은 총 4가지(상, 하, 좌, 우)가 있습니다.
삼항 연산자를 이용하여 현재 좌표에서 4개의 방향 중 가장 가까운 거리를 찾습니다.
먼저 x좌표(좌, 우)와 y좌표(상, 하)에서의 최솟값을 각각 구한 뒤에 두 값을 비교하여 더 작은 값을 최종 출력합니다.
🚩 소스 코드
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();
sc.close();
int min_x = (w - x) > x ? x : (w - x);
int min_y = (h - y) > y ? y : (h - y);
System.out.println(min_x > min_y ? min_y : min_x);
}
}
오류 및 오타 지적, 질문, 인사 등 무엇이든 언제나 환영입니다!
읽어주셔서 감사합니다.
끝!🦕