티스토리 뷰

반응형

www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net


 

⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 수학
  • 기하학

 


 

⊙ 문제 접근 과정

 

직사각형 안에 있는 좌표에서 직사각형 경계선까지의 최솟값을 구하는 문제다.

 

직사각형 안에 임의의 좌표 (x, y)를 찍고 생각해보자.

우리는 그 좌표에서 경계선까지의 최소값을 구해야 한다.

 

(x, y) 좌표에서 오른쪽 맨 위 좌표인 (w, h)나 왼쪽 맨 아래 좌표인 (0,0)까지 그어보자

그리고 원을 그려보자.

 

그러면 알 수 있다.

 

직사각형에서 경계선까지 최솟값을 구할 때엔 대각선은 전혀 고려하지 않아도 된다.

 

그렇다면 x와 y, 그리고 w -x와 h-y

이 4개만 비교하면 최솟값을 구할 수 있다.

 

생각나는 함수가 있는가?

 

 

min만 사용하면 된다.


 

⊙ 문제 풀이

 

x, y, w, h = list(map(int, input().split()))
print(min([x, y, w - x, h - y]))

 


⊙ 결과

 

 


 

 

⊙ 마무리

 

 

수학을 조금만 숙지하고 있어도 코드 길이를 매우 줄일 수 있다.

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함