[BOJ/백준-Python]1085번 - 직사각형에서 탈출

1085번 - 직사각형에서 탈출

문제

한수는 지금 (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


해결할 방법을 생각해보자.💡

직사각형의 변(테두리)로 가는 가장 빠른 경로를 찾는 문제다. 현재 내가 있는 위치 x,y와 직사각형의 우상에 있는 꼭지점 w, h를 받아주자.

import sys
x, y, w, h = map(int, sys.stdin.readline().split())

현재 내가 (x,y)에 있을 때 x,y가 (2,2)라고 생각해보자, 그리고 w,h가 (3,3)이라고 생각해보면, x좌표를 1증가시키거나 y좌표를 1증가 시키는 것이 빠르다. 만약 0,0 중 하나라도 가려면 최소 2를 움직여야한다. 따라서, 현재 내 위치 기준으로 네 가지 값을 구할 수 있다.

  1. 내 위치 x좌표에서 0까지 가는 거리
  2. 내 위치 x좌표에서 w까지 가는 거리
  3. 내 위치 y좌표에서 0까지 가는 거리
  4. 내 위치 y좌표에서 h까지 가는 거리

이것들 중 가장 작은 값이 나오면 그것을 출력해주면된다. 네 개의 값들을 각 변수를 만들어 저장해주고, 전부 절대값으로 지정해줬다.

a = abs(x)
b = abs(x - w)
c = abs(y)
d = abs(y - h)

이제 이것들을 리스트에 담아서 min()과 조건문을 사용해서 원하는 것을 출력하게 만들어주면 문제 해결!

square = [a,b,c,d]
if min(square) == a:
    print(a)
elif min(square) == b:
    print(b)
elif min(square) == c:
    print(c)
else:
    print(d)

코드 💻

import sys

x, y, w, h = map(int, sys.stdin.readline().split())
a = abs(x)
b = abs(x - w)
c = abs(y)
d = abs(y - h)

square = [a,b,c,d]
if min(square) == a:
    print(a)
elif min(square) == b:
    print(b)
elif min(square) == c:
    print(c)
else:
    print(d)

해결 로그

문제 푼 날짜 체크
2022-07-19
   
   
   
   

2022

[web]jQuery 복습 3

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

13 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

14 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

5 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

10 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑