본문 바로가기

백준 문제풀이/수학

백준 1085 Python / 직사각형에서 탈출 / 브론즈3

안녕하세요.

 

백준 1085 직사각형에서 탈출 문제를 python으로 풀어보겠습니다.

링크는 아래와 같습니다.

 

https://www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

 


풀이

 

처음 문제를 보면 복잡하다는 생각이 드실 수도 있겠습니다.

다만 그림을 그려보거나 머릿속으로 상상해보면 매우 간단한 문제입니다.

 

간단하게 예제 1번을 그림으로 그려보았습니다.

0, 0 부터 10,3 까지의 직사각형이고, 현재 위치는 6,2 입니다.

가장 가까운 경계선은 y=3 입니다.

이를 통해 우리가 알 수 있는 것은,

가장 가까운 경계선까지의 거리는 현재 위치에서 상하좌우 중 가장 짧은 거리가 됩니다.

 

왼쪽 거리는 현재 x 좌표 만큼이며,

아래 거리는 현재 y 좌표 만큼이고,

위쪽 거리는 좌표h 에서 현재좌표 y를 뺀 값 (3 - 2)

오른쪽 거리는 좌표w 에서 현재좌표 x를 뺀 값이 되겠습니다.

이 값들 중 최솟값이 최소 거리가 되겠습니다.

 

코드는 다음과 같습니다.

 

x, y, w, h = map(int, input().split()) # 좌표 입력
print(min(x, y, w-x, h-y)) # 상하좌우 거리 중 최솟값 출력

 

감사합니다.