백준 웹사이트 "1085번 - 직사각형에서 탈출" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)

문제
1085번: 직사각형에서 탈출
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램
www.acmicpc.net
소스 코드
#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 |