알고리즘 공부/백준 문제풀이
1085_백준 [직사각형에서 탈출]
yongyongMom
2022. 9. 20. 20:44
SMALL
2022.09.20
브론즈 3
c++ 사용
문제
-- 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다.
-- 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
-- 첫째 줄에 x, y, w, h가 주어진다.
#include<iostream>
using namespace std;
int main() {
int x, y, w, h; // 한수의 위치와 직사각형 오른쪽 위 꼭지점 위치
cin >> x >> y >> w >> h;
//0,0 랑 비교
//각 좌표 비교
int zero; // 원점과의 거리 비교
int line; // 오른쪽 위 꼭짓점과의 거리 비교
if (x > y) zero = y;
else zero = x;
if (w - x > h - y) line = h - y;
else line = w - x;
if (zero > line) cout << line;
else cout << zero;
}
- 각 위치의 좌표를 입력받는다.
- 한수와 원점과의 위치, 한수와 꼭지점과의 위치를 구해 직사각형의 변에 더 가까운 곳의 거리의 구한다. (여기서 말하는 거리는 직선거리만 고려한다.)
- 원점과의 거리는 곧 한수의 x,y좌표 값과 같으므로 더 작은 값을 zero 변수에 저장한다.
- 꼭짓점과의 거리는 각 꼭짓점의 x,y 좌표와 한수의 x,y 좌표의값을 빼 더 작은 값은 line 변수에 저장한다.
- zero 와 line 값을 비교해 더 작은 값을 출력하면 끄읕--!--
해당 문제는 직선거리만을 구하면 되는 문제입니다..
따라서 x 좌표끼리의 거리, y 좌표끼리의 거리 를 구해
그 중에서도 더 작은 값을 구하면 되는 문제로 간단히 이해하고 문제 풀이를 진행하였습니다.
이점에서 원점과의 거리를 고려해야 하는 점이 신경써서 확인해야 하는 부분이라고 ...
풀 때는 못 느꼈지만 이 글을 쓰다보니 느껴집니다....!!
반응형
LIST