반응형
문제
한수는 지금 (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는 정수
해설
문제를 쉽게 풀어서 설명한다면
"직사각형 내부에 있는 점 (x,y)에서 직사각형의 변까지의 최소 거리" 를 구하는 문제이다.
결국 최솟값을 찾으면 되는 문제이다. 무엇중에 최소값을 구하는지만 생각하면 해결된다.
사각형이니까 변이 4개, 우리에게 주어진 점은 1개(x, y)
그렇다면 (x, y)에서 사각형 각 변까지의 거리 총 4개를 구하고 그중에 최솟값을 취하면 된다.
아래 코드는 4개의 거리값을 구하고, 정렬을 이용하여 최솟값을 구하는 코드이다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var [x, y, w, h] = input.map(el => parseInt(el));
//w, h 는 x, y보다 크기 떄문에 항상 양수
const xDiff = w-x
const yDiff = h-y
// 네개의 변수 중 최소값이 문제에서 하는 최소 거리이다.
const arr = [xDiff, yDiff, x, y]
// js의 기본 sort는 ascii 문자를 기준으로 정렬하기 때문에 반드시 비교함수를 넣어줘야한다.
arr.sort((a, b) => {
return a - b
});
console.log(arr[0])
|
cs |
반응형
'끄적 > Algorithm' 카테고리의 다른 글
[알고리즘] 백준 - 3009 네 번째 점 node js 구현 (0) | 2021.08.22 |
---|---|
[알고리즘] 백준 - 1003 피보나치 함수 node js 구현 (0) | 2021.08.20 |
[알고리즘] 백준 -11653 소인수분해 node.js 구현 (0) | 2021.08.16 |
[알고리즘] 백준 -1463 1로 만들기 파이썬 구현 (0) | 2019.02.12 |
[알고리즘] 백준 - 1149 RGB 거리 파이썬 구현 (0) | 2019.02.01 |