본문 바로가기
✨ 코딩테스트/Baekjoon

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

by 환풍 2023. 2. 12.
728x90

 

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

 

 

My Code

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 a,b = 0;
 
        a = w-x;
        int mmin = x > a ? a : x;
 
        b = h-y;
        int mmin1 = y > b ? b : y;
 
        int min = mmin > mmin1 ? mmin1 : mmin;
 
        System.out.println(min);
    }
}
cs

 

How

 (x, y) 좌표가 직사각형 내부의 어떤 위치에 있던 x축, y축과 평행하는 거리만 구하면

(x, y) 좌표에서 대각선의 경계면까지의 가장 짧은 거리는 4개 중에 하나에 해당된다.

 

위 코드와 같이 (x, y) 좌표에서 경계면까지의 거리 4가지만 정리를 하고 나면 코드는 간단히 작성할 수 있다

mmin과 mmin1를 이용해 x, y의 최솟값을 구해주었고, 최종적으로 min을 통해 최솟값을 도출시켰다.

이처럼 삼항연산을 이용하여 비교를 통해 이해하기 쉽게 풀어보았다.

 

반응형

댓글