문제 (2231번)
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.
자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
출력
첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.
풀이
코드
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let n = input.trim().parse::<u32>().unwrap();
let mut sum: u32;
let mut g_vec: Vec<u32> = Vec::new();
for i in 1..=n {
sum = i;
sum += i.to_string()
.chars()
.map(|c| c.to_digit(10).unwrap())
.sum::<u32>();
// println!("{sum}");
if sum == n { g_vec.push(i); }
}
if g_vec.len() == 0 {
println!("0");
} else {
println!("{}", g_vec.iter().min().unwrap());
}
}
해설
특이사항 없음
추가 학습
- 특이사항 없음
'컴퓨터 과학 > 자료구조, 알고리즘' 카테고리의 다른 글
[Rust로 백준 하루 하나] 12-4. 체스판 다시 칠하기 (2) | 2024.09.21 |
---|---|
[Rust로 백준 하루 하나] 12-3. 수학은 비대면강의입니다 (2) | 2024.09.21 |
[Rust로 백준 하루 하나] 12-1. 블랙잭 (1) | 2024.09.19 |
[Rust로 백준 하루 하나] 11-7. 알고리즘 수업 - 점근적 표기 1 (4) | 2024.09.16 |
[Rust로 백준 하루 하나] 11-6. 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2024.09.16 |