1. 문제
어떤 자연수 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 출력
https://www.acmicpc.net/problem/2231
2231번: 분해합
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이
www.acmicpc.net
2. 풀이
모든 경우의 수를 전부 구해보면서 구하면 된다.
가장 작은 생성자를 출력해야하니 1부터 N보다 작은 수까지 반복하며 생성자가 맞는지 확인하고 결과를 출력하도록 했다.
// 분해합
int N = int.Parse(Console.ReadLine());
// N의 가장 작은 생성자 구하기. 모든 경우의 수를 시도
for (int i = 1; i < N; i++)
{
char[] cArr = i.ToString().ToCharArray();
int num = 0;
foreach(char c in cArr) {
num += int.Parse(c.ToString());
}
int res = num + i;
if (res == N)
{
Console.WriteLine(i);
return;
}
}
Console.WriteLine(0);
'컴퓨터&프로그래밍 > Baekjoon' 카테고리의 다른 글
[C#] 1018 - 체스판 다시 칠하기 (0) | 2023.10.18 |
---|---|
[C#] 19532 - 수학은 비대면강의입니다 (0) | 2023.10.17 |
[C#] 2798 - 블랙잭 (0) | 2023.10.13 |
[C#] P24267 - 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2023.10.12 |
[C#] P24266 - 알고리즘 수업 - 알고리즘의 수행 시간 5 (0) | 2023.10.12 |