728x90
문제 2231번
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
자연수 n이 주어졌을 때, n의 가장 작은 생성자 m을 구하기 위해서 m을 0부터 n보다 작을 때까지 반복문을 돌려줘야한다.
m과 m의 각 자리수들을 더했을 때 n이 나와야하기 때문에 m을 문자열로 바꿔준다.
문자열로 바꿔 해당 문자열의 길이가 몇인지 구한다. 해당 길이만큼 반복문을 돌려 sum에 더해준다. 여기서 sum을 미리 m으로 초기화시켜줬으므로 m의 각 자리수들만 더하면 된다.
그리고 sum이 n과 같다면 해당 m이 n의 가장 작은 생성자를 나타내는 것이므로 m을 출력해주고 break를 통해 반복문을 빠져나온다. 만약 m이 n-1이 될때까지도 생성자가 없다면 0을 출력해준다.
const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require("fs").readFileSync(readFileSyncAdress).toString().trim();
const n = Number(input);
for(let m=0;m<n;m++){
let sum = m;
let m_str = m.toString();
let m_length = m_str.length;
for(let i=0;i<m_length;i++){
sum+=Number(m_str[i]);
}
if(sum===n){
console.log(m);
break;
}
if(m===n-1){
console.log(0);
}
}

728x90
'백준 > JavaScript' 카테고리의 다른 글
[JS] 백준 1436번 - 영화감독 숌 (0) | 2024.03.19 |
---|---|
[JS] 백준 19532번 - 수학은 비대면강의입니다 (0) | 2024.03.18 |
[JS] 백준 2798번 - 블랙잭 (1) | 2024.03.17 |
[JS] 백준 24267번 - 알고리즘의 수행 시간 6 (2) | 2024.03.15 |
[JS] 백준 24266번 - 알고리즘의 수행 시간 5 (0) | 2024.03.14 |