본문 바로가기
Problem Solving/boj.kr (JS)

[BOJ / 자바스크립트] 1110 : 더하기 사이클

by hoiiiii 2022. 2. 6.

문제 : https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

Sol ) 문제 조건대로 구현하는 문제

 

1. 수가 한 자릿수일 경우 (10보다 작을 경우) 새로운 수는 자기 자신

2. 수가 10보다 클 경우 새로운 수는 각 자릿수의 합

3. 기존의 수의 일의 자리 ( %10 )과 새로운 수의 일의 자리 (%10)을 이어 붙여서 수를 갱신

4. 1~3 과정을 1 사이클로 측정

5. 갱신된 수가 처음의 수와 같아지면 로직을 종료

 

소스코드 )

const fs = require('fs');
const n = Number(fs.readFileSync('/dev/stdin'));

let check_cycle = function (n,target,cnt){
    let new_num;
    if (n<10){
        new_num = n;
    }
    else{ new_num = n%10 + parseInt(n/10) };
    n = Number(String(n%10) + String(new_num%10))
    
    if (n===target){
        return cnt
    }
    cnt = check_cycle(n,target,cnt+1);
    return cnt
}
console.log(check_cycle(n,n,1));

댓글