728x90
728x90
문제
한수는 지금 (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는 정수
예제 입력 1
6 2 10 3
예제 출력 1
1
예제 입력 2
1 1 5 5
예제 출력 2
1
예제 입력 3
653 375 1000 1000
예제 출력 3
347
예제 입력 4
161 181 762 375
예제 출력 4
161
알고리즘 분류
- 수학
- 기하학
문제 출처
https://www.acmicpc.net/problem/1085
문제 해결 방법
- |x - 0|, |y - 0|, |h - y|, |w - x| 중 최솟값이 점 (x, y)에서 직사각형의 경계선까지 가는 거리의 최솟값이다.
코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int x, y, w, h;
vector<int> nums;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> x >> y >> w >> h;
nums.push_back(abs(y - h));
nums.push_back(abs(w - x));
nums.push_back(abs(0 - x));
nums.push_back(abs(0 - y));
sort(nums.begin(), nums.end()); // 오름차순 정렬
cout << nums[0] << '\n';
return 0;
}
채점 결과
참고
- [단계별로 풀어보기] > [기하 1]
- 브론즈III
728x90
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ-3053][C++] 택시 기하학 (0) | 2022.11.10 |
---|---|
[BOJ-2477][C++] 참외밭 (0) | 2022.11.10 |
[BOJ-4153][C++] 직각삼각형 (0) | 2022.11.10 |
[BOJ-3009][C++] 네 번째 점 (0) | 2022.11.10 |
[BOJ-4358][C++] 생태학 (0) | 2022.11.09 |
[BOJ-11478][C++] 서로 다른 부분 문자열의 개수 (0) | 2022.11.09 |
[BOJ-1269][C++] 대칭 차집합 (0) | 2022.11.09 |
[BOJ-1764][C++] 듣보잡 (0) | 2022.11.09 |