blog
(백준) 직사각형에서 탈출-1085 본문
문제
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 x, y, w, h가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다.
#include <stdio.h>
int main(){
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
if(c-a<d-b && c-a<a && c-a<b){
printf("%d", c-a);
}
else if(c-a>d-b && d-b<a && d-b<b){
printf("%d", d-b);
}
else if(d-b>a && c-a>a && a<d-b && a<b){
printf("%d", a);
}
else if(d-b>b && c-a>b && c-a>b && a>b){
printf("%d", b);
}
else if(c-a==d-b && c-a<a){
printf("%d", c-a);
}
else if(c-a==d-b && c-a>a){
printf("%d", a);
}
else
printf("%d", a);
return 0;
}
일일 모든 경우의 수를 다 구해서 풀었다
c = 직사각형의 가로의 길이
d = 직삭각형의 세로의 길이
1. c - x 가 다른 경우의 수의 길이 보다 작으면 c-x를 출력한다.
2. d - b 가 다른 경우의 수의 길이 보다 작으면 d-b를 출력한다.
3. a의 길이가 다른 경우의 수의 길이보다 작으면 a를 출력한다.
4. b의 길이가 다른 경우의 수의 길이보다 작으면 b를 출력한다.
5. c-a의 길이가 다른 경우의 수의 길이보다 작으면 c-a를 출력한다.
6. c-a==d-b && c-a>a 면 a를 출력한다
7. 위의 경우의수를 다 충족하지 않으면 a를 출력한다.
'백준' 카테고리의 다른 글
(백준) 16952번 - A → B (0) | 2023.04.18 |
---|---|
(백준) 27433번-팩토리얼 2 (0) | 2023.04.18 |
(백준) 링-3036 (0) | 2023.04.18 |
(백준) 2563: 색종이 (0) | 2023.04.10 |
(백준) 2444-별찍기 (0) | 2023.04.09 |