[백준] 1085번 직사각형에서 탈출 C++ 문제 풀이 수학 2

2020. 2. 25. 18:19알고리즘/백준

728x90
반응형

문제

한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.

출력

첫째 줄에 문제의 정답을 출력한다.


예제 입력 1

6 2 10 3


예제 출력 1

1


문제 풀이

#include <iostream>
using namespace std;
int main() {
  int x, y, w, h;
  cin>>x>>y>>w>>h;
  w -= x;h -= y;
  x = x>=w?w:x;
  y = y>=h?h:y;
  cout<<(x>=y?y:x);
}

직사각형의 경계선까지 가는 거리는 총 4개가 나오는데


 1. x에서 0까지의 거리 = x
 2. y에서 0까지의 거리 = y
 3. x에서 w까지의 거리 = w-x
 4. y에서 h까지의 거리 = h-y

 

이렇게 나타낼 수 있습니다.

4개 중 가장 가까운 거리를 출력해야 하므로 토너먼트 식으로 비교한 다음 출력하였습니다.

 

출처 : https://www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.

www.acmicpc.net

 

728x90
반응형