[백준/BOJ] 백준 2231번 : 분해합
2020. 6. 3. 19:43ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/2231
완전 탐색(브루트 포스)을 통해 문제를 해결하였다.
문자열로 n을 입력받고 n의 가장 작은 생성자를 찾기 위해 0부터 n의 생성자가 맞는지 확인하였다.
코드
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int solve(string n)
{
int ret = 987654321;
//0부터 생성자를 찾는다.
for (int i = 0; i < stoi(n); i++)
{
int sum = 0;
for (int j = 0; j < to_string(i).size(); j++)
{
//각 자릿수의 합을 더한다
sum += stoi(to_string(i).substr(j,1));
}
//해당 수를 더한다
sum += i;
//만약 생성자라면
if (sum == stoi(n))
{
ret = i;
//0부터 찾기 시작했으므로
//가장 작은 생성자
return ret;
}
}
//생성자를 못찾은 경우는
//987654321을 리턴
return ret;
}
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
string n;
int result;
cin >> n;
result = solve(n);
if (result == 987654321)
cout << 0;
else
cout << result;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 14502번 : 연구소 (0) | 2020.06.04 |
---|---|
[백준/BOJ] 백준 7568번 : 덩치 (0) | 2020.06.03 |
[백준/BOJ] 백준 14501번 : 퇴사 (0) | 2020.06.03 |
[백준/BOJ] 백준 2309번 : 일곱 난쟁이 (0) | 2020.06.02 |
[백준/BOJ] 백준 1065번 : 한수 (0) | 2020.06.01 |