본문 바로가기
알고리즘/백준

백준 1085번 직사각형에서 탈출 [C++]

by seongjun 2023. 12. 2.

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

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

 

 

직사각형에서, 현재 위치 x,y가 주어지고, 우측 상단 꼭짓점의 좌표 w,h가 주어진다.

이때, x,y에서 직사각형의 경계선 까지 가는 최소 거리를 구하면 된다.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    int x, y;
    int w, h;
    cin >> x >> y >> w >> h;

    int xToW = w-x;
    int zeroToX = x - 0;
    int yToH = h-y;
    int zeroToY = y - 0;

    cout << min(xToW, min(zeroToX, min(yToH, zeroToY)));
}

간단하게 4개의 꼭짓점 중 가장 가까운 곳까지의 거리를 구하면 된다.

즉, (0,0), (0,h), (w,0), (w,h) 중, 현재 위치 (x,y) 와 가장 가까운 곳의 좌표까지의 거리를 구하면 되는 것이다.

각 꼭짓점의 좌표는 0, w, h,로 만 이루어져 있기에, 각 위치와의 거리를 구해 최솟값을 출력하면 된다.