본문 바로가기
백준 알고리즘

[JS]백준 2869번 달팽이는 올라가고싶다.

by 오늘의코더 2022. 7. 9.
반응형
출처

www.acmicpc.net

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

풀이

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');
let [morning, night, stick] = input.map(Number);
let count = 0;

while (stick > 0) {
    stick = stick - morning;
    count++;
    if (stick <= 0) {
        break;
    }
    stick = stick + night;
}

console.log(count);


일단 반복문으로 접근해 보았는데, 시간 초과가 떴습니다. 시간을 줄이려면 수학 공식화해서 풀어야 합니다.

접근방법
일단은 단순하게 생각하면 높이 / 하루에 가는 거리
를 해주면 됩니다. 그런데 마지막 날 미끄러지는 거리는 안 가도 되므로 높이 - 미끄러지는 거리만큼만 가면 됩니다. 따라서 높이 - 미끄러진 거리 / 하루에 가는 거리 하면 되는데 소수점이 나온다면 날짜이므로 올림을 해줍니다.

코드

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');
let [morning, night, stick] = input.map(Number);

console.log(Math.ceil((stick - night) / (morning - night)));




반응형

댓글