IT/알고리즘
[BAEKJOON] 백준 1085번: 직사각형에서 탈출 (Python)
무녈
2021. 9. 13. 22:33
문제 링크: https://www.acmicpc.net/problem/1085
문제
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 x, y, w, h가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다.
코드
x, y, w, h = map(int, input().split())
print(min(x, y, w-x, h-y))
문제 설명
왼쪽 아래 꼭짓점을 (0, 0) 좌표라 할 때, 오른쪽 위 꼭짓점을 (w, h) 좌표에 위치한 직사각형이 존재한다.
이때 직사각형 내 임의의 점 (x, y) 좌표에서 직사각형의 모서리(경계면)까지의 거리 중 최단거리를 구하는 문제이다.
코드 설명
- (x, y) 좌표를 직사각형 내에서 임의의로 지정했을 떄, 경계면까지의 거리를 나타낸 그림이다.
- 각각의 길이는 위의 그림과 같다
- 왼쪽 아래 꼭지점이 (0, 0) 이기 때문에 y축에서 (x, y)의 거리는 x
- x축에서 (x, y)의 거리는 y
- 오른쪽 위 꼭짓점 (w, h)의 x축과 평행한 경계면 까지의 거리는 h-y
- (w, h)의 y축과 평행한 경계면 까지의 거리는 w-x
- 각각의 길이를 구하고, min함수를 통해 최소값을 구하여 출력한다.
반응형