본문 바로가기
코딩테스트/백준

[백준/java] 직사각형에서 탈출

by drCode 2021. 2. 1.
728x90
반응형

www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.

www.acmicpc.net

문제

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

 

※ 접근 방식

(1) w, h 값이 주어졌을 때 w/2, h/2의 값을 구한다.

(2) 0.5배 한 값들보다 x나 y가 더 크면 w -x, h - y를 해서 minX, minY에 넣는다.

(3) 그렇지 않으면 x, y 값 그대로 minX, minY에 넣는다.

(4) Math.min(minX, minY)를 사용하여 더 적은 값을 출력한다.

 

package boj;

import java.util.Scanner;

public class ExitSquare {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt(), y = sc.nextInt(), w = sc.nextInt(), h = sc.nextInt();
		double halfX = (double)w/2, halfY = (double)h/2;
		int minX = x > halfX ? w - x : x, minY = y > halfY ? h - y : y;
		System.out.println(Math.min(minX, minY));
	}
}
728x90
반응형

댓글