728x90
https://www.acmicpc.net/problem/1085
1085번: 직사각형에서 탈출
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램
www.acmicpc.net
문제
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 x, y, w, h가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다.
제한
- 1 ≤ w, h ≤ 1,000
- 1 ≤ x ≤ w-1
- 1 ≤ y ≤ h-1
- x, y, w, h는 정수
예제 입력 1
6 2 10 3
예제 출력 1
1
예제 입력 2
1 1 5 5
예제 출력 2
1
예제 입력 3
653 375 1000 1000
예제 출력 3
347
예제 입력 4
161 181 762 375
예제 출력 4
161
sol1)
y축으로부터의 거리, x축으로부터의 거리, y축과 평행한 상단 경계선까지의 거리, x축과 평행한 상단 경계선까지의 거리
x,y,w,h = map(int,input().split())
print(min(x,y,w-x,h-y))
sol2)
x,y가 직사각형의 중앙부분 기준으로 얼마나 치우쳤는지에 따라 if와 else문을 만들어 list에 포함시킨다. 만약 중앙에서 왼쪽 부분에 있다면 해당 x또는 y좌표를, 오른쪽 부분에 있다면 w-x 또는 h-y를 lst에 추가한다. ('kangji3378'님의 코드를 참고.)
import sys
input = sys.stdin.readline
x,y,w,h=map(int,input().split())
lst=[]
if w//2<x:
lst.append(w-x)
else:
lst.append(x)
if h//2<y:
lst.append(h-y)
else:
lst.append(y)
print(min(lst))
이제 그만해야지...
#썸네일 사진 출처: 게티이미지뱅크
'Baekjoon Algorithm > python' 카테고리의 다른 글
[Python]BAEKJOON 11399번 ATM (0) | 2022.12.26 |
---|---|
[Python] BAEKJOON 3053번 택시기하학 (0) | 2022.12.23 |
[Python]BAEKJOON 2750번 수 정렬하기 (0) | 2022.12.22 |
[Python] BAEKJOON 2231번 분해합 (0) | 2022.12.22 |
[Python] BAEKJOON 15596번 정수 N개의 합 (0) | 2022.12.20 |
댓글