MapleStory Finger Point

백준 알고리즘

백준 알고리즘 1085번 직사각형에서 탈출 (파이썬)

吳鍾振 2022. 8. 15. 18:58

문제:

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

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


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

# 이 문제는 현재 좌표에서 직사각형까지 최소 길이를 구하는 문제이다.
# 최소 길이는 상하좌우 모두 될 수 있으며 현재는 알 수 없다.

x, y, w, h = map(int, input().split())

# def min_value(a, b):
#     if a >= b:
#         print(b)
#     else:
#         print(a)

# if x > abs(x - w) and y > abs(y - h):
#     print(min(abs(x - w), abs(y - h)))
# elif x > abs(x - w) and y < abs(y - h):
#     print(min((abs(x - w), y)))
# elif x < abs(x - w) and y > abs(y - h):
#     print(min((x, abs(y - h))))
# elif x <= abs(x - w) and y <= abs(y - h):
#     print(min((x, y)))
print(min(x, y, abs(x - w), abs(y - h)))

결과:

수많은 고민의 흔적이 보이는 주석들..
무슨 함수를 만들어도 보고, 각종 조건문을 다 사용해보았는데도 계속 실패해서
그냥 막 써보자 하고 맨 마지막 한 줄을 작성해보았는데, 성공했다.. 
쓸데없는 머리를 써면 안되는 걸 깨달음

반응형