백준/C++

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

성실한 당근농부 2023. 6. 12. 10:05

# 문제

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

 

 


 

# 풀이

제한을 잘 확인해보면 어렵지 않은 문제다.

바로 정답 소스코드 확인!

 

#include <iostream>
#include <algorithm>
using namespace std;

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

    int xAxis = min(x, w-x);
    int yAxis = min(y, h-y);
    cout << min(xAxis, yAxis);
    
    return 0;
}

제한을 확인해보면 1 ≤ x ≤ w-1, 1 ≤ y ≤ h-1 이므로 입력되는 한수의 위치가 직사각형 내부임을 알 수 있다.

따라서 algorithm 헤더에 포함된 min함수를 통해 x와 w-x 중 더 작은 값을 찾아주고, y와 h-y 중 더 작은 값을 찾은 후 이 둘을 비교해 가장 작은 값을 출력해주면 직사각형의 네 변 중 가장 가까운 변(경계선)까지 가는 거리의 최솟값을 찾을 수 있다!

 

 

 

 

 

 


 

 

 

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

 

728x90