728x90
반응형
[백준] 2869번 - 달팽이는 올라가고 싶다 (node.js)
링크
https://www.acmicpc.net/problem/2869
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 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 fs = require("fs");
const [day, night, height] = fs
.readFileSync("input.txt")
.toString()
.trim()
.split(" ")
.map((d) => parseInt(d));
const solution = () => {
// (높이 - 밤에 미끄러지는 수) / (아침에 이동하는 수 - 밤에 미끄러지는 수)
console.log(Math.ceil((height - night) / (day - night)));
};
solution();
풀이
단순히 반복문을 돌려 해결할 수도 있지만 시간 복잡도 때문에 시간 초과가 나게 됩니다.
그에 간단한 계산식을 만들어 보면, 정상에 도착하면 미끄러지지 않고 그 즉시 끝나게 되니 정상(높이)에서 밤에 미끄러지는 수를 빼주면 됩니다. 즉 (높이 - 밤에 미끄러지는 수) 값까지 만 올라가면 됩니다.
그리고 아침에는 위로 이동을 하지만 밤에는 미끄러지니 결국 하루에 이동하는 값은 (아침에 이동하는 수 - 밤에 미끄러지는 수)가 될 것입니다.
결과 값이 딱 떨어지지 않는 수가 나오면 하루가 더 필요하다는 뜻이므로 Math.ceil 메서드를 사용해 올림을 하여 하루를 더해줍니다.
참조!
728x90
반응형
'코딩 테스트' 카테고리의 다른 글
[백준] 2581번 - 소수 (node.js) (0) | 2024.04.29 |
---|---|
[백준] 1978번 - 소수 찾기 (node.js) (0) | 2024.04.29 |
[백준] 1193번 - 분수찾기 (node.js) (1) | 2024.04.25 |
[백준] 2292번 - 벌집 (node.js) (1) | 2024.04.25 |
[백준] 2903번 - 중앙 이동 알고리즘 (node.js) (0) | 2024.04.23 |
댓글