문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제입력 | 예제출력 |
2 1 5 | 4 |
5 1 6 | 2 |
100 99 1000000000 | 999999901 |
❌ 풀이
const input=require('fs').readFileSync('/dev/stdin').toString().split(' ');
let num= input.map(x=>Number(x));
function day(a,b,v){
return Math.floor(((v-a)/(a-b)))+1;
}
console.log(day(...num))
우선 input의 숫자 세개를 받고
정상에 도달하면 미끄러지지않는다는 전제가 있으므로
나무의높이V에서 마지막날 도달할 낮에 올라갈수있는 높이A를 뺀값을
낮에올라가는높이 - 밤에떨어지는높이B 를 뺀값으로 나누었다.
❗ 하지만 이경우 예제 2번으로 예를들다면
6미터의 나무에서 낮에 5미터를 오를 수 있으니 6-5 = 1
5미터를 갔다가 1미터를 떨어지니 4 즉 1/4는 0.25인데
Math.floor를 하고 +1을 했으니 1일을 반환한다.
Math.floor가 아니고 Math.ceil을 했어야한다.
⭕ 풀이
const input=require('fs').readFileSync('/dev/stdin').toString().split(' ');
let num= input.map(x=>Number(x));
function day(a,b,v){
return Math.ceil(((v-a)/(a-b)))+1;
}
console.log(day(...num))
-출처
https://www.acmicpc.net/problem/2869
'Algorithm > Baekjoon(Node.js)' 카테고리의 다른 글
[JavaSrcipt] Baekjoon - 2775 : 부녀회장이 될테야 (shift) (0) | 2021.09.24 |
---|---|
[JavaSrcipt] Baekjoon - 10250 : ACM 호텔 (split(' ').map) (0) | 2021.09.23 |
[JavaSrcipt] Baekjoon - 1193 : 분수찾기 (0) | 2021.09.21 |
[JavaSrcipt] Baekjoon - 2292 : 벌집 (for,while) (0) | 2021.09.20 |
[JavaSrcipt] Baekjoon - 1712 : 손익분기점 (0) | 2021.09.19 |