각 자리수를 배열로 빼서 풀려고 했으나 잘 안돼서 결국 구글링을 해서 힌트를 얻었다
각 자리수를 구하는 식으로 1의 자리, 10의 자리 수들을 빼서 풀어보면 더욱 쉽다!
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다.
먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다.
그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.
const fs = require("fs");
const input = require('fs').readFileSync('dev/stdin').toString().trim();
//require('fs').readFileSync('dev/stdin')
let result = Number(input);
let count = 0;
while (true) {
// 10의 자리수 + 1의 자리수
let sum = Math.floor(result / 10) + result % 10;
// result의 10의자리 + add의 1의 자리
result = (result % 10) * 10 + sum % 10;
count++;
// input값이랑 result가 같으면 탈출
if (Number(input) === result) {
break;
}
}
console.log(count);
const fs = require("fs");
const input= require('fs').readFileSync('dev/stdin').toString().trim().split(' ')
// 26
// 배열 복사하기
let result = input.slice();
if(result[0] < 10) {
// result[0]에 0 더해주기
result[0] = '0' + input[0]
}
console.log(result) //['01']
// let A = parseInt(newArr[0][0]); // 0
// let B = parseInt(newArr[0][1]); // 1
let newArr = result.slice();
do {
let A = newArr[0][0]; // 0
let B = newArr[0][1]; // 1
result[0][0] = B;
result[0][1] = A+B;
console.log(result)
count++
}
while(result !== input);