백준 문제풀이

2231 번 : 분해합

하다블 2023. 5. 3. 18:22
반응형

문제는 다음과 같습니다.

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

 

2231번: 분해합

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

www.acmicpc.net

 

풀이 코드는 다음과 같습니다.

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int func(string s)
{
	int total{0};
	for(int i{0};i<s.length();i++)
	{
		
		total+=s[i]-'0';
	}
	return total;
}
int main()
{
	int n;
	cin>>n;
	int result{0};
	for(int i{1};i<n;i++)
	{
		int temp;
		temp=i+func(to_string(i));
		if(temp==n)
		{
			result=i;
			break;
		}
	}
	cout<<result;
}

문제의 분야가 부르트포스 알고리즘인 만큼, 1부터 입력받은 수 까지 확인해 보는 방식으로 풀었습니다.

각 자리수를 더하는 방법은 입력한 정수를 문자열로 바꾸어 각 자리를 더하는 방식으로 했습니다.

 

반응형