백준 1085번: 직사각형의 네 변까지 거리 비교하기
백준 1085번 직사각형에서 탈출은 직사각형 안의 위치 (x, y)에서 경계까지 가는 가장 짧은 거리를 구하는 문제입니다.
왼쪽과 오른쪽 변까지의 거리는 각각 x, w-x이고 아래쪽과 위쪽 변까지의 거리는 y, h-y입니다. 좌우 거리와 상하 거리에서 각각 작은 값을 먼저 구한 뒤 두 값을 다시 비교했습니다.
코드의 minVert에는 좌우 거리의 최솟값이, minHori에는 상하 거리의 최솟값이 들어갑니다. 변수 이름은 방향과 반대지만 최종 계산에는 영향이 없습니다.
풀이 코드
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();
}
}