c# 백준 2231 분해합
풀이 과정
단순하게 답을 구했다.
입력받은 값 N의 생성자가 무조건으로 가져야 하는 조건은 N보다 작아야
한다.
그러므로 0부터 N까지의 for문
을 실행하여 가장 먼저 발견된 생성자
를 출력하였다.
다음과 같은 방식으로 구현하였다.
for (int i = 0; i < N; i++)
{
int sum = ... // 분해합을 구함
// N의 생성자라면
if(sum == N)
{
...
}
}
분해합을 구하는 과정에서 자릿수들의 합
을 구하는 부분만 따로 함수로 구현하여 코드를 작성했다.
다음 함수는 매개변수 n을 입력받아 n의 자릿수의 모든 합을 구해 return한다.
public static int GetTotalDigit(int n)
{
int sum = 0;
while (n > 0)
{
sum += n % 10;
n = n / 10;
}
return sum;
}
전체 코드
class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
// 생성자
int con = 0;
for (int i = 0; i < N; i++)
{
int sum = i + GetTotalDigit(i);
// N의 생성자라면
if(sum == N)
{
con = i;
break;
}
}
// 생성자 출력
Console.WriteLine(con);
}
public static int GetTotalDigit(int n)
{
int sum = 0;
while (n > 0)
{
sum += n % 10;
n = n / 10;
}
return sum;
}
}
댓글남기기