JavaScript 백준 온라인 알고리즘 공부
백준 2869 번 Node.js 문제풀이
달팽이는 올라가고 싶다
https://www.acmicpc.net/problem/2869
const fs = require("fs");
const input = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `100 99 1000000000`
)
.trim()
.split(" ");
let up = Number(input[0]);
let down = Number(input[1]);
let totalMeter = Number(input[2]);
let days = 0;
days = Math.ceil((totalMeter - down) / (up - down));
console.log(days);
이전의 손익분기점 문제와 유사하다. 최소 구현시간이 0.2초도 안되는 엄격한 시간, 예제에서 힌트를 찾을 수 있는 구성이라든지.... 여러부분에서 유사한 덕분에 익숙해져 예전과는 달리 연산작업에 정신적 고통은 없었다.
얼핏보면 목표지점인 totalMeter에 달팽이가 오르고 내려간 하루 총 이동거리값으로 나누면 도착날짜가 나올거라 추측하게 된다. 하지만 더 정답에 다다를려면 내려간거리를 목표지점에 빼버려야 한다는 것이다. 계속 곱하는 도중에 목표길이에 거진 도달하면 달팽이가 올라가기만해도 성공하므로 (totalMeter - down)
이란 로직도 필요해지는 것이다. 그리고 days의 값을 반환하기위해 Math.ceil()소수올림처리하면 정답을 구할 수가 있다.