백준 BaekJoon Online Judge // 1085

2021. 1. 22. 16:10Programming/BOJ

백준 알고리즘 BaekJoon Online Judge 1085번 "직사각형에서 탈출" 문제입니다.

import sys
x, y, w, h = map(int, sys.stdin.readline().split())
print(min((abs(x-w), abs(x), abs(y-h), abs(y))))

현재 (x, y) 좌표일 때, (0,0)으로 시작해서 (w,h) 좌표로 끝나는 직사각형의 테두리까지 가는 최소 거리를 구하는 문제다.

 

그림판으로 그린 그림 설명

최소 거리이기 때문에 가로 혹은 세로 직선거리라고 추측할 수 있다.

 

가로로 따질 경우는 두 가지를 따져야 한다. w-x와 x-0 둘 중 작은 것을 골라야하고

 

세로로 따질 경우는 h-y와 y-0 둘 중 작은 것을 골라야한다.

 

결국 w-x, x-0, h-y, y-0 넷 중 가장 작은 것을 고르는 경우이므로 min 함수를 이용해서 풀 수 있다.