Blog

백준 1085번: 직사각형의 네 변까지 거리 비교하기

백준 1085번 직사각형에서 탈출은 직사각형 안의 위치 (x, y)에서 경계까지 가는 가장 짧은 거리를 구하는 문제입니다.

왼쪽과 오른쪽 변까지의 거리는 각각 x, w-x이고 아래쪽과 위쪽 변까지의 거리는 y, h-y입니다. 좌우 거리와 상하 거리에서 각각 작은 값을 먼저 구한 뒤 두 값을 다시 비교했습니다.

코드의 minVert에는 좌우 거리의 최솟값이, minHori에는 상하 거리의 최솟값이 들어갑니다. 변수 이름은 방향과 반대지만 최종 계산에는 영향이 없습니다.

풀이 코드

Java
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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer 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 minVert = Math.min(x, w-x);
        int minHori = Math.min(y, h-y);

        bw.write(String.valueOf(Math.min(minVert, minHori)));
        bw.flush();
    }
}