문제 : 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));
'Problem Solving > boj.kr (JS)' 카테고리의 다른 글
[BOJ / 자바스크립트] 2562 : 최댓값 (0) | 2022.02.07 |
---|---|
[BOJ / 자바스크립트] 10818 : 최소, 최대 (0) | 2022.02.06 |
[BOJ / 자바스크립트] 10951 : A+B - 4 (0) | 2022.02.06 |
[BOJ / 자바스크립트] 10952 : A+B - 5 (0) | 2022.02.06 |
[BOJ / 자바스크립트] 10871 : X보다 작은 수 (0) | 2022.02.06 |
댓글