-- 예전 기록/BOJ

[ BOJ ] 1085 : 직사각형에서 탈출 ( BRONZE 3 ) / C, Python

rejo 2023. 10. 2. 10:50

문제

한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 x, y, w, h가 주어진다.

출력

첫째 줄에 문제의 정답을 출력한다.

풀이 과정

경계선까지 가는 최소 거리는 다음 4가지를 비교해야 한다.

 

가로 기준으로, x 에서 0까지 가는게 빠른지 x 에서 w 까지 가는게 빠른지

세로 기준으로, y 에서 0까지 가는게 빠른지 y 에서 h 까지 가는게 빠른지

 

이 중 최솟값을 출력한다.

C

#include <stdio.h>

int main(void) {
    int x, y, w, h;
    scanf("%d %d %d %d", &x, &y, &w, &h);

    int min = x;

    if (min > w-x) min = w-x;
    if (min > y) min = y;
    if (min > h-y) min = h-y;

    printf("%d", min);
    return 0;
}

Python

x, y, w, h = map(int, input().split())
print(min([x,y,w-x,h-y]))