728x90
 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

문제

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

풀이

아래 코드에서 xDis는 한수가 x축과 평행한 방향으로 움직였을 때, 직사각형과 만나는 거리의 최솟값이고,

yDis는 한수가 y축과 평행한 방향으로 움직였을 때, 직사각형과 만나는 거리의 최솟값이다.

xDis와 yDis 중 작은 값이 답일 것이다.

코드

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());
        int w = Integer.parseInt(st.nextToken());
        int h = Integer.parseInt(st.nextToken());

        int xDis = Math.min(x - 0, w - x);
        int yDis = Math.min(y - 0, h - y);

        System.out.println(Math.min(xDis, yDis));
    }
}

틀린 부분이 있다면 정정해주시면 감사하겠습니다.

궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!

728x90

+ Recent posts