본문 바로가기
알고리즘 Node.js

백준 1085문제. 직사각형에서 탈출

by 반갑조? 2025. 4. 17.

문제

문제: 한수는 지금 (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는 정수

예제 입력:

6 2 10 3

또는

1 1 5 5

또는

653 375 1000 1000

또는

161 181 762 375

예제 출력: 1 또는 1 또는 347 또는 161

 

풀이

const fs = require('fs');
const input = fs.readFileSync(0, 'utf-8').trim().split(' ').map(Number);

const [x, y, w, h] = input;

const min = Math.min(x, y, w - x, h - y);

console.log(min);

 

풀이 해석

1. 왼쪽:6 아래쪽:2 오른쪽:10-6=4 위쪽: 3-2=1

 

x:6 y:2 w:10 h:3

내 위치: x,y인 6,2

w,h위치는 10,3

 

내 위치와 w,h위치는 사각형임.

여기서 제일 가까운 방향으로 탈출해야함.

 

왼쪽은 6-0 이니까 6,

오른쪽은 w-x 10-6이니까 4,

아래쪽은 2-0 니까 2,

위쪽은 3-2니까 1

 

따라서 1이 제일 작은 숫자라서 위쪽으로 탈출하면 된다..