728x90
출처: 백준
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
예제 입력 1
2 1 5
예제 출력 1
4
예제 입력 2
5 1 6
예제 출력 2
2
예제 입력 3
100 99 1000000000
예제 출력 3
999999901
내 코드
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", function (line) {
input = line.split(" ").map(Number);
rl.close();
}).on("close", function () {
const A = input[0];
const B = input[1];
const V = input[2];
console.log(Math.ceil((V - B) / (A - B)));
process.exit();
});
결과
> 2 1 5 4 |
> 5 1 6 2 |
> 100 99 1000000000 999999901 |
처음에 세 번째 예제를 못 보고 while문으로 풀었는데 그러면 계산하는데 너무 오래 걸린다.
식을 만들면 '높이 / 올라가는 높이' 일 텐데 정상에 올라가면 미끄러지지 않으니까 첨부터 높이에서 미끄러지는 높이를 빼준다.
그리고 실제 하루 동안 올라가는 높이는 미끄러진 높이를 뺀 값이다.
그런데 값이 정확이 나누어 떨어지지 않는다면 결국 하루 더 올라가야 한다. Math.ceil() 메서드로 올림 해준다.
'Math.ceil((높이 - 미끄러지는 길이) / (올라가는 높이 - 미끄러진 높이))'으로 식 완성!
728x90
'프로그래밍 > 백준 알고리즘' 카테고리의 다른 글
[백준 / node.js] 10926번: ??! (0) | 2022.07.02 |
---|---|
[백준 / node.js] 11047번: 동전 0 (1) | 2021.09.01 |
[백준 / node.js] 1193번: 분수찾기 (2) | 2021.08.18 |
[백준 / node.js] 2941번: 크로아티아 알파벳 (2) | 2021.08.15 |
[백준 / node.js] 5622번: 다이얼 (0) | 2021.08.14 |
댓글