# 문제
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
# 풀이
제한을 잘 확인해보면 어렵지 않은 문제다.
바로 정답 소스코드 확인!
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int x, y, w, h;
cin >> x >> y >> w >> h;
int xAxis = min(x, w-x);
int yAxis = min(y, h-y);
cout << min(xAxis, yAxis);
return 0;
}
제한을 확인해보면 1 ≤ x ≤ w-1, 1 ≤ y ≤ h-1 이므로 입력되는 한수의 위치가 직사각형 내부임을 알 수 있다.
따라서 algorithm 헤더에 포함된 min함수를 통해 x와 w-x 중 더 작은 값을 찾아주고, y와 h-y 중 더 작은 값을 찾은 후 이 둘을 비교해 가장 작은 값을 출력해주면 직사각형의 네 변 중 가장 가까운 변(경계선)까지 가는 거리의 최솟값을 찾을 수 있다!
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 10101번: 삼각형 외우기 | C++ 풀이 (0) | 2023.06.14 |
---|---|
[백준] 9063번: 대지 | C++ 풀이 (0) | 2023.06.13 |
[백준] 11653번: 소인수분해 | C++ 풀이 (0) | 2023.06.11 |
[백준] 2581번: 소수 | C++ 풀이 (0) | 2023.06.10 |
[백준] 1978번: 소수 찾기 | C++ 풀이 (0) | 2023.06.09 |