본문 바로가기

백준 문제 풀이/c++

백준 1085번 "직사각형에서 탈출" -- c++

728x90

안녕하세요! 오늘은 백준 1085번 "직사각형에서 탈출" 문제를 풀어보겠습니다.

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

문제 설명

  • 직사각형은 각 변이 좌표축에 평행하다.
  • 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 위치한다.
  • 현재 점의 좌표 (x, y)가 주어졌을 때, 직사각형의 변까지 가는 최단 거리를 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄에 x, y, w, h가 주어진다. (1 ≤ w, h ≤ 1,000 / 1 ≤ x ≤ w-1 / 1 ≤ y ≤ h-1)

출력

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

풀이 방법

입력으로는 x, y, w, h가 주어집니다. 이 때, w와 h는 각각 직사각형의 너비와 높이를 나타내는 정수이며, x와 y는 좌표를 나타내는 정수입니다. 또한, 주어지는 값들은 모두 1 이상 1,000 이하의 범위를 가지며, x는 1 이상 w-1 이하, y는 1 이상 h-1 이하의 범위를 가집니다.

이 문제를 해결하는 가장 간단한 방법은 직사각형의 경계선까지 가는 거리를 구하는 것입니다. 이를 위해 x와 y의 값과 w-x, h-y의 값 중 최솟값을 구하면 됩니다.

아래는 이 문제를 해결할 수 있는 C++ 코드입니다:

#include <iostream>
#include <algorithm>

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

    int min_distance = std::min({x, y, w-x, h-y});

    std::cout << min_distance << std::endl;

    return 0;
}

이 코드는 먼저 입력으로 받은 x, y, w, h 값을 이용하여 직사각형의 경계선까지 가는 거리의 최솟값을 구합니다. 이를 위해 std::min() 함수를 사용하여 x, y, w-x, h-y 값 중 최솟값을 구합니다. 그리고 최솟값을 출력합니다. 이렇게 간단한 방법으로 문제를 해결할 수 있습니다.

728x90