문제
한수는 지금 $(x, y)$에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 $(0, 0)$, 오른쪽 위 꼭짓점은 $(w, h)$에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 $x, y, w, h$가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다.
제한
- $1 ≤ w, h ≤ 1,000$
- $1 ≤ x ≤ w-1$
- $1 ≤ y ≤ h-1$
- $x, y, w, h$는 정수
풀이
- 제한 조건을 보면, 한수는 문제에서 묘사한 직사각형 안에 위치하여있다
- 고로, 한수의 위치 $(x, y)$를 기준으로 위/아래/왼쪽/오른쪽 변까지의 거리를 구해,
min으로 최솟값을 구해주면 우리가 원하는 답을 얻을 수 있다.- 아래 변까지의 거리: y
- 위쪽 변까지의 거리: x
- 왼쪽 변까지의 거리:
min_w = w-x - 오른쪽 변까지의 거리:
min_h = h-y
코드
x, y, w, h = map(int, input().split())
min_w = w - x
min_h = h - y
min_distance = min(min_w, min_h, x, y)
print(min_distance)
chat_bubble 댓글남기기
댓글남기기