문제
한수는 지금 (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
#문제 풀이 방법
1. 한수의 위치(x,y)와 직사각형 오른쪽 위 꼭짓점 좌표(w,h)가 입력되고
한수의 위치에서 직사각형의 경계선까지의 최소거리를 출력한다.
2. (x,y)에서 직사각형 4개의 경계선 사이의 거리를 구하고 그 중 최솟값을 알아내자!
반응형
#C
#include <stdio.h>
int main()
{
int x,y,w,h;
int ds[4];
int min=1000;
scanf("%d %d %d %d",&x,&y,&w,&h);
ds[0]=h-y;//위쪽 변과 점 사이의 거리
ds[1]=y-0;//아래쪽 변과 점 사이의 거리
ds[2]=x-0;//왼쪽 변과 점 사이의 거리
ds[3]=w-x;//오른쪽 변과 점 사이의 거리
for(int i=0;i<4;i++)
{
if(ds[i]<min)
{
min=ds[i];
}
}
printf("%d",min);
return 0;
}
#C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int x,y,w,h;
vector<int> v;
int min=1000;
cin>>x>>y>>w>>h;
v.push_back(h-y);
v.push_back(y-0);
v.push_back(x-0);
v.push_back(w-x);
cout<<*min_element(v.begin(),v.end());
return 0;
}
#Python
x,y,w,h=map(int,input().split())
print(min(h-y,y-0,x-0,w-x))
반응형
'PS > 백준' 카테고리의 다른 글
[백준/Baekjoon]<2231번> 분해합 [C/C++/Python][Class 2] (0) | 2022.09.21 |
---|---|
[백준/Baekjoon]<4153번> 직각삼각형 [C/C++/Python][Class 2] (0) | 2022.09.20 |
[백준/Baekjoon]<1546번> 평균 [C/C++/Python][Class 1] (0) | 2022.09.18 |
[백준/Baekjoon]<1157번> 단어 공부 [C/C++/Python][Class 1] (1) | 2022.09.17 |
[백준/Baekjoon]<8958번> OX퀴즈 [C/C++/Python][Class 1] (1) | 2022.09.15 |