백준(C언어) 풀이/수학
백준(C) 1085번 직사각형에서 탈출 풀이
개발윗미
2021. 9. 8. 18:14
C로 구현한 1085번 직사각형에서 탈출 문제 풀이입니다.
https://www.acmicpc.net/problem/1085
1085번: 직사각형에서 탈출
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램
www.acmicpc.net
#include<stdio.h>
int main() {
int x, y, w, h;
scanf("%d %d %d %d", &x, &y, &w, &h);
w -= x;
h -= y;
if(x > w) {
x = w;
}
if(y > h) {
y = h;
}
if(x > y) {
printf("%d", y);
} else {
printf("%d", x);
}
}
이 문제는 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 문제로, 직사각형의 네변 중 현재의 위치에서 움직일 때
가장 짧은 거리를 출력하면 된다. 그렇기 때문에 네가지의 경우를 비교하여 정답을 도출할 수 있도록 해야 한다.
위 코드를 그림과 함께 볼 때, 변수 w는 2번 쪽으로 가는 거리이고, h는 1번 쪽으로 가는 거리이다.
또한, 조건문을 통해 변수 x가 변수 w보다 크다면 변수 w의 값으로 할당해준다. 즉, x는 4번 쪽으로 가는 거리인데
2번 쪽으로 가는 거리가 더 짧다면 그 거리값으로 할당해주는 방식이다.
변수 y 또한 같은 방식이며, 최종적으로 문제에서 요구하는 거리의 최솟값을 출력한다.