C로 구현한 1085번 직사각형에서 탈출 문제 풀이입니다.
https://www.acmicpc.net/problem/1085
#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 또한 같은 방식이며, 최종적으로 문제에서 요구하는 거리의 최솟값을 출력한다.
'백준(C언어) 풀이 > 수학' 카테고리의 다른 글
백준(C) 2581번 소수 풀이 (0) | 2021.09.15 |
---|---|
백준(C) 2475번 검증수 풀이 (0) | 2021.09.08 |
백준(C) 10250번 ACM 호텔 풀이 (2) | 2021.09.01 |
백준(C) 10039번 평균 점수 풀이 (0) | 2021.08.31 |
백준(C) 1978번 소수 찾기 풀이 (0) | 2021.08.31 |