안녕하세요.
백준 1085 직사각형에서 탈출 문제를 python으로 풀어보겠습니다.
링크는 아래와 같습니다.
https://www.acmicpc.net/problem/1085
풀이
처음 문제를 보면 복잡하다는 생각이 드실 수도 있겠습니다.
다만 그림을 그려보거나 머릿속으로 상상해보면 매우 간단한 문제입니다.
간단하게 예제 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)) # 상하좌우 거리 중 최솟값 출력
감사합니다.