주소 : 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 |