문제
한수는 지금 (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 |
⭕ 풀이
const input=require('fs').readFileSync('/dev/stdin').toString();
let [x,y,w,h]=input.split(' ').map(x=>Number(x));
let a=x;
let b=y;
if(w-x<x){
a=w-x;
}
if(h-y<y){
b=h-y;
}
console.log(a<b?a:b);
처음엔 이렇게 위와 아래로 가는거리를 비교해 b로 받고
왼쪽과 오른쪽으로 가는거리를 비교해서 a로 받고
이 둘중 작은값을 출력하도록 만들었는데
보다보니 굳이 위아래 좌우를 따로비교할 필요없이
Math.min을 사용하면 좀더 간결하게 표현할수 있을것같았다.
⭕ 다시풀이
const input=require('fs').readFileSync('/dev/stdin').toString();
let [x,y,w,h]=input.split(' ').map(x=>Number(x));
console.log(Math.min(w-x,x,h-y,y));
///////////////////////////////////////////////
let [x,y,w,h]=require('fs').readFileSync('/dev/stdin').toString().split(' ').map(x=>Number(x));
console.log(Math.min(w-x,x,h-y,y));
처음엔 문제가 무슨내용인지 머릿속에 직사각형을 그리고 상상해보았다.
하지만 내가 상상하는내용을 컴퓨터가 같이 도형을 그리며 생각하진않을테니..
그냥 상하좌우 어디로가든 제일 적게움직여 도착하는,
즉 최소값만 찾으면 되는 문제였다.
가끔 문제를 너무 어렵게 꼬아서 받아들여질때가있는데
그럴때마다 처음 받아들인 내용을 다 잊고 문제를 처음본듯이 생각해보는것도 좋은것같다.
-출처
'Algorithm > Baekjoon(Node.js)' 카테고리의 다른 글
[JavaSrcipt] Baekjoon - 4153 : 직각삼각형 (0) | 2021.10.06 |
---|---|
[JavaSrcipt] Baekjoon - 3009 : 네 번째 점 (0) | 2021.10.05 |
[JavaSrcipt] Baekjoon - 9020 : 골드바흐의 추측 (0) | 2021.10.03 |
[JavaSrcipt] Baekjoon - 4948 : 베르트랑 공준 (Array,fill) (0) | 2021.10.02 |
[JavaSrcipt] Baekjoon - 1929 : 소수찾기 (0) | 2021.10.01 |