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
'백준 문제 풀이 > c++' 카테고리의 다른 글
백준 1157번 "단어 공부" -- c++ (0) | 2024.02.28 |
---|---|
백준 1152번 "단어의 개수" -- c++ (0) | 2024.02.28 |
백준 1008번 문제 "A/B" -- C++ (2) | 2024.02.27 |
백준 1001번 문제 "A-B" --c++ (0) | 2024.02.27 |
백준 1000번 문제 "A+B" -- c++ (2) | 2024.02.27 |