- toc {:toc}
문제
한수는 지금 (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는 정수
출처:https://www.acmicpc.net/problem/1085
풀이
- 삼항연산자를 사용해봤다.
- 거리 ⇒ 수직으로 내려야 함. ⇒ 축과 평행한 면으로 수직으로 내려야 하기 때문에 결국 폭같은 경우 x가 0, w 둘 중 어떤 것과 가까운지, 높이와 같은 경우 y가 0, h 둘 중 어떤 것과 가까운지를 확인하면 된다.
#include <iostream>
using namespace std;
int minDistance(int x, int y, int w, int h);
int main()
{
int x, y, w, h;
cin >> x >> y >> w >> h;
cout << minDistance(x, y, w, h) << endl;
return 0;
}
int minDistance(int x, int y, int w, int h)
{
int mW, mH;
(w/2<x)? mW=w-x:mW=x;
(h/2<y)? mH=h-y:mH=y;
return (mW<mH)? mW : mH;
}