백준 웹사이트 "1085번 - 직사각형에서 탈출" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int x, y, w, h;
scanf("%d %d %d %d", &x, &y, &w, &h);
int min1, min2;
if(x < w-x)
min1 = x;
else
min1 = w-x;
if (y < h-y)
min2 = y;
else
min2 = h-y;
if(min1<min2)
printf("%d\n", min1);
else
printf("%d\n", min2);
}
문제 풀이
네 변까지의 거리를 각각 구한 후, 그 중 최솟값을 구하는 문제입니다.
문제를 시각화하면 위와 같습니다. 이때, 네 변까지의 거리는 각각 x, y, w-x, h-y입니다. Line 8 ~ 11에서는 x와 w-x의 최솟값을 구해 이를 min1에 저장하고, Line 13 ~ 16에서는 y와 h-y의 최솟값을 구해 이를 min2에 저장합니다. 이후 Line 18 ~ 21에서 min1과 min2의 최솟값을 구하면, 네 변까지의 거리 중 최솟값을 구할 수 있습니다.
이 문제는 반복되는 코드가 많습니다. 만약 '입력된 두 수의 최솟값을 구하는 함수'를 작성하여 이를 'x와 w-x', 'y와 h-y', 'min1과 min2'에 각각 적용시킨다면, 훨씬 깔끔한 코드를 작성할 수 있을 것입니다. 도전해보고 싶은 분들은 꼭 도전해보세요!
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 4153번 - 직각삼각형 (0) | 2022.01.27 |
---|---|
[백준/C언어] 3009번 - 네 번째 점 (0) | 2022.01.27 |
[백준/C언어] 9020번 - 골드바흐의 추측 (0) | 2022.01.26 |
[백준/C언어] 4948번 - 베르트랑 공준 (0) | 2022.01.25 |
[백준/C언어] 1929번 - 소수 구하기 (0) | 2022.01.24 |