Baekjoon Online Judge
문제
한수는 지금 (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는 정수
예제 입력 | 예제 출력 |
6 2 10 3 | 1 |
1 1 5 5 | 1 |
653 375 1000 1000 | 347 |
161 181 762 375 | 161 |
풀이
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int x, y; // 한수의 위치
int w, h; // 직사각형의 오른쪽 위 꼭짓점
cin >> x >> y >> w >> h;
// 직사각형의 경제선부터 한수의 위치까지의 가로 거리
int xDis = abs(w - x);
if (xDis > x)
xDis = x; // (0, 0)부터 x까지의 거리
// 직사각형의 경제선부터 한수의 위치까지의 세로 거리
int yDis = abs(h - y);
if (yDis > y)
yDis = y; // (0, 0)부터 y까지의 거리
// xDis와 yDis 중 더 작은 것을 출력
int shortDis = (xDis <= yDis) ? xDis : yDis;
cout << shortDis << '\n';
return 0;
}
한수부터 직사각형의 경계선까지 x축과 y축 거리의 최솟값을 각각 찾은뒤 두 숫자를 비교해서 더 작은 수를 출력한다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 직각삼각형 (0) | 2022.04.09 |
---|---|
[Baekjoon/C++] 네 번째 점 3009번 (0) | 2022.04.09 |
[Baekjoon/C++] 골드바흐의 추측 9020번 (0) | 2022.04.09 |
[Baekjoon/C++] 베르트랑 공준 4948번 (0) | 2022.04.09 |
[Baekjoon/C++] 소수 구하기 1929번 (0) | 2022.04.08 |