본문 바로가기
백준/C

백준 2231번 : 분해합 [C]

by 대니스 2022. 8. 2.

주소 : https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

소스 코드 :

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num,cal,sol = 0;
scanf("%d", &num);
for(int g=0;g<2;g++)
for(int f=0;f<10;f++)
for (int e = 0;e < 10;e++)
for (int d = 0;d < 10;d++)
for (int c = 0;c < 10;c++)
for (int b = 0;b < 10;b++)
for (int a = 0;a < 10;a++)
{
cal = 1000000 * g + 100000 * f + 10000 * e + 1000 * d + 100 * c + 10 * b + 1*a+a+b+c+d+e+f+g;
if (cal == num)
{
sol = 1000000 * g + 100000 * f + 10000 * e + 1000 * d + 100 * c + 10 * b + 1 * a;
printf("%d", sol);
return 0;
}

}
printf("0");
return 0;
}

 

마무리 : 처음에 이 문제를 어떻게 풀어야 했다. 힌트를 얻고자 알고리즘 분류 봤는데 브루트포스 알고리즘을 보고 설마라는 심정으로 많은 반복문을 이용했는데 답이어서 놀랐다. 다시 보면 시간 제한이 2초인것이 브루트포스 알고리즘을 사용할만 했다.

'백준 > C' 카테고리의 다른 글

백준 2798번 : 블랙잭 [C]  (0) 2022.08.03
백준 2292번 : 벌집 [C]  (0) 2022.08.02
백준 4153번 : 직각삼각형 [C]  (0) 2022.08.02
백준 1085번 : 직사각형에서 탈출 [C]  (0) 2022.08.01
백준 1157번 : 단어 공부 [C]  (0) 2022.07.27