[JAVA] 백준 1085번 : 직사각형에서 탈출

안녕하세요, 해을입니다🦖

이번 글에서는 백준 1085번 : 직사각형에서 탈출 문제에 대해 알아보겠습니다!

image

💡 문제

한수는 지금 (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);
 }
}

오류 및 오타 지적, 질문, 인사 등 무엇이든 언제나 환영입니다!

읽어주셔서 감사합니다.

끝!🦕


© 2022. Haeeul All rights reserved.

🐾해을의 개발자국🐾

Powered by Hydejack v9.1.5