728x90
반응형
1085번: 직사각형에서 탈출
한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
www.acmicpc.net
구현 언어: 파이썬
x, y, w, h = map(int, input().split())
answer = 0
# 사각형의 세로 2등분 중 왼쪽
if x <= w/2:
if x >= 0 and y >= h:
answer = y - h
elif x >= 0 and y <= 0:
answer = abs(y)
elif x <= 0 and (y >= 0 and y <= h):
answer = abs(x)
elif x >= 0 and (y >= 0 and y <= h):
if y <= h/2:
answer = min(abs(x), abs(y))
else:
answer = min(abs(x), abs(h-y))
else:
if y > 0:
answer = pow(x ** 2 + (y-h) ** 2 ,1/2)
else:
answer = pow(x ** 2 + y ** 2, 1/2)
# 사각형의 세로 2등분 중 오른쪽
else:
if x <= w and y >= h:
answer = y - h
elif x <= w and y <= 0:
answer = abs(y)
elif x >= w and (y >= 0 and y <= h):
answer = abs(x - w)
elif x >= w/2 and (y >= 0 and y <= h):
if y <= h/2:
answer = min(abs(w - x), abs(y))
else:
answer = min(abs(w - x), abs(h - y))
else:
if y > 0:
answer = pow((x-w) ** 2 + (y-h) ** 2, 1/2)
else:
answer = pow((x-w) ** 2 + y ** 2, 1/2)
print(answer)
시도 횟수: 1
구현 포인트:
케이스를 잘 나눠보면서 하면 된다 ..
조금만 더 보면 코드 더 깔끔하게 짤 수 있을 거 같은데 나중에 해야지 ㅎㅎ
728x90
반응형
'Archive > BOJ' 카테고리의 다른 글
백준 2798번: 블랙잭 (0) | 2021.02.06 |
---|---|
백준 10250번: ACM 호텔 (0) | 2021.02.06 |
백준 1152번: 단어의 개수 (0) | 2021.02.03 |
백준 5532번: 방학 숙제 (0) | 2021.02.03 |
백준 2752번: 세수정렬 (0) | 2021.02.03 |