const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split(' ');
let A = Number(input[0]); //올라갈 수 있는 높이
let B = Number(input[1]); //미끄러지는 정도
let V = Number(input[2]); //올라가야 하는 높이
let count = 0;
let sum = 0;
let result = 0;
for(let i =0; i <= count; i++) {
sum = result + A;
// console.log('sum : ' + sum)
count++;
// console.log('count : ' + count);
if(sum >= V) {
// console.log(sum);
break;
}
result = sum - B;
// console.log('result : ' + result);
}
console.log(count);
10% 정도까지 올라가다가 시간초과가 뜬다. loop문에서 시간이 많이 걸리는듯 하다. loop를 개선시킬 방법이 뭘까
문제점: 시간초과
해결방안: 루프가 아닌 간단한 계산식으로 바꿔야 한다.(구글링으로힌트봄)
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split(' ');
let A = Number(input[0]); //올라갈 수 있는 높이
let B = Number(input[1]); //미끄러지는 정도
let V = Number(input[2]); //올라가야 하는 높이
let a = (V-B)/(A-B);
console.log((V-B)%(A-B) === 0? a : Math.ceil(a));
거의 다른분거 힌트 다 보고푼거. 나는 왜 이렇게 생각을 못했지
총 하루 이동하는 거리 = (올라갈수있는높이A - 미끄러지는 정도B)
최종적으로 도달해야하는 거리 = (올라가야 하는 높이V-미끄러지는 정도B) 이다. 결론적으로
최종도달 거리/하루 이동거리 = 걸리는 기간
딱 떨어지지 않으면 하루가 더 필요하다는 뜻이니 올림을 해준다.
[참고한 블로그://gurtn.tistory.com/52)
let input = require('fs').readFileSync('/dev/stdin').toString().split(' ');
const A = input[0];
const B = input[1];
const V = input[2];
console.log(Math.ceil((V - B) / (A - B)));
Math.floor() : 소수점 이하를 버림한다.
Math.ceil() : 소수점 이하를 올림한다.
Math.round() : 소수점 이하를 반올림한다.