지구정복

[수학] 백준 - 직사각형에서 탈출 본문

데이터 엔지니어링 정복/Algorithm

[수학] 백준 - 직사각형에서 탈출

nooh._.jl 2021. 7. 22. 15:28
728x90
반응형

https://www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

 

-문제해설

현재 x좌표에서 직사각형 끝으로 가기 위한 방법은 오른쪽으로 가거나 왼쪽으로 가거나 두 가지이고

왼쪽일 경우 거리는 x, 오른쪽일 경우 거리는 w-x

y좌표에서 직사각형 끝으로 가려면 위로 가거나 아래로 가거나 둘 뿐이고

위로갈 경우 거리는 h-y, 아래로 갈 경우 거리는 y

 

이 네가지 경우에서 가장 작은 수를 출력하면 된다.

 

 

-자바

package math;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class BJ1085 {
	private static BufferedWriter bw = 
			new BufferedWriter( new OutputStreamWriter(System.out));
	private static int x, y, w, h;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer( br.readLine() );
		x = Integer.parseInt( st.nextToken() );
		y = Integer.parseInt( st.nextToken() );
		w = Integer.parseInt( st.nextToken() );
		h = Integer.parseInt( st.nextToken() );
	
		//x랑 y좌표 중 작은 거 찾기
		bw.write( Math.min( Math.min( x, w-x ), Math.min( y, h-y ) ) + "\n" );
		bw.flush();
		bw.close();
		br.close();
	}
}

 

-파이썬

x, y, w, h = map(int, input().split()); print( min( x, y, w-x, h-y ) )
728x90
반응형
Comments