JavaScript 백준 온라인 알고리즘 공부
백준 1712 번 Node.js 문제풀이
const fs = require("fs");
const [...arr] = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `1000 70 170`
)
.trim()
.split(" ");
let A = Number(arr[0]);
let B = Number(arr[1]);
let C = Number(arr[2]);
let N = A / (C - B);
let answer = Math.floor(N) + 1;
B >= C ? (answer = -1) : answer;
console.log(answer);
출력된 2100000001
숫자가 입력창의 A숫자 2100000000
하고 단 1의 차이만 있다. 9와 10의 숫자 차이도 1
이다. C - B
의 결과값으로 A
를 나누면 거기에 1
를 더한 출력창의 결과값이 나올 수 있는걸 추측 할 수있다.
이 공식으로 예제 1
도 구할 수 있으니 거의 확정적인 계산법인 것이다.
다만 여러 테스트케이스들을 고려할 때 계산값이 예제1
과 예제3
처럼 딱 떨어지는 정수가 아닌 실수도 나올 수 있는 걸 감안해야한다. 그래서 Math.floor(N)
로 반내림 처리한 후 손익분기점을 넘기기위해 +1
도 넣는다.
그리고 B의 정수가 C의 정수보다 크거나 같으면 Infinity
또는 음수가 반환되어 손익분기점이 성립못하므로 그런 경우가 생겼을 때를 대비해 간단한 조건문을 붙여서 -1
를 반환한다.