Code
😢 이렇게 쉬울 거라고 생각하지 못 했던 문제
😊 x, y는 현재 나의 위치이며 w, h는 직사각형의 오른쪽 위 꼭짓점, 0,0은 왼쪽 아래 꼭짓점이다.
10,3 (w, h) |
|||||||||
6,2 (x, y) |
|||||||||
0,0 |
위 표을 좌표계라고 생각해보자. 그리고 벗어날 수 있는 모든 경우의 수를 배열에 저장해보자.
좌표 0,0 기준으로 직사각형을 벗어나려면 x, y값 그 자체로 움직여야 벗어날 수 있으므로 [x, y]를 배열에 우선 넣는다.(x-0, y-0)
좌표 w, h 기준으로 직사각형을 벗어나려면 w-x, h-y만큼 움직여야 벗어날 수 있다. 따라서, [w-x, h-y]를 추가적으로 배열에 넣는다.
결과적으로 [ x, y, w-x, h-y ] 총 4개의 경우의 수를 구할 수 있다(직사각형을 벗어날 수 있는 이동 값)
최종적으로 Math.min.apply(null, 배열)넣어서 최소값을 구하고 출력해주면 된다.
Full Code (https://github.com/DasolPark/Dasol_JS_Algorithm/tree/master/Baekjoon)
// Escape from Rectangle |
// For submit |
// const fs = require('fs'); |
// const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ').map(num => parseInt(num)); |
// For local test |
const input = [6, 2, 10, 3]; // x y w h |
const x = input[0]; |
const y = input[1]; |
const w = input[2]; |
const h = input[3]; |
const counters = [x, y, w - x, h - y]; |
console.log(Math.min.apply(null, counters)); |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
백준 3009번: 네 번째 점(직사각형) Node.js(JavaScript) (0) | 2020.01.27 |
---|---|
백준 4153번: 직각삼각형(피타고라스의 정리) Node.js(JavaScript) (0) | 2020.01.27 |
백준 9020번: 소수 구하기(골드바흐의 추측 - 에라토스테네스의 체) Node.js(JavaScript) (0) | 2020.01.24 |
백준 4948번: 소수 구하기(베르트랑 공준 - 에라토스테네스의 체) Node.js(JavaScript) (0) | 2020.01.22 |
백준 1929번: 소수 구하기(에라토스테네스의 체) Node.js(JavaScript) (0) | 2020.01.22 |