🔸첫 번째 풀이
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let [A, B, V] = input[0].split(' ').map(Number);
//지난 날짜
let cnt = 0;
if (A > V) {
console.log(1)
}
while (snail <= V) {
//하루가 시작된다
cnt++
console.log('===며칠이 지났는가 : ' + cnt)
//1. 낮에 달팽이가 올라간다
snail += A;
console.log('A : ' + snail)
//2. 정상에 도달했는가?
if (snail >= V) {
break;
}
//3. 밤에 달팽이가 미끄러진다
snail -= B;
console.log('B : ' + snail)
}
console.log(`총 ${cnt}일이 걸렸습니다.`)
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
👉 Node.js에서 파일 시스템 모듈(fs)을 사용하여 표준 입력으로부터 입력값을 받아오는 코드let [A, B, V] = input[0].split(' ').map(Number);
👉 input[0] : 입력값에서 첫번째 줄을 의미
👉 split(' ') : 띄어쓰기로 구분된 세 개의 숫자를 공백을 기준으로 분리.
문자열 배열로 반환
👉 map(Number) : 문자열 배열의 각 요소를 숫자로 바꿈
✔️ map : javascript 배열의 내장메서드.
배열의 각 요소에 대해 지정된 함수를 호출하여 새로운 배열을 생성.
기존 배열은 변경되지 않음
❗위 방법으로 실행을 해 보면 값은 나오지만
입력값이 [100, 99, 1000000000]와 같이 큰 값일 경우 시간초과로 실패
❗반복문을 사용하기 때문에 시간이 오래걸리는건지?
🔸두 번째 풀이
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let [A, B, V] = input[0].split(' ').map(Number);
function daysToReachTop (A, B, V) {
let days = Math.ceil((V - A) / (A - B)) + 1 ;
return days;
}
const days = daysToReachTop(A, B, V);
console.log(days);
(V - A) : 달팽이가 이동해야할 거리.
달팽이가 정상에 도착하면 미끄러지지 않기 때문에 마지막 하루를 뺀 것
마지막 하루는 따로 +1 하루를 더해준다.
(A - B) : 달팽이의 하루 이동 거리
Math.ceil( ) : 식이 나누어 떨어지지 않으면 소수점 이하를 올림 한다.