문제링크
https://www.acmicpc.net/problem/1085
문제
한수는 지금 (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는 정수
해석
왼쪽 아래 꼭짓점이 (0,0)에 있기 때문에 간단하게 수학시간에 그리는 좌표평면을 생각해볼 수 있다.
현재 위치에서 직사각형의 경계선까지 가는 방법은 4가지이고 이 중 최소값을 찾으면 된다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <iostream>
using namespace std;
int distance(int x, int y, int w, int h) {
int dis1 = x;
int dis2 = y;
int dis3 = w - x;
int dis4 = h - y;
return min(dis1, min(dis2, min(dis3, dis4)));
}
int main() {
int x, y, w, h;
cin >> x >> y >> w >> h;
cout << distance(x, y, w, h);
}
|
cs |
Memo
간단하고 기분좋게 풀었다.