BEAKJOON

백준(2231번 분해합)풀이 C++

Shin_jisoo 2021. 1. 15. 22:55
728x90

www.acmicpc.net/problem/2231

 

2231번: 분해합

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

www.acmicpc.net

1) 주석 없는 VERSION

#include <iostream>
#include <cmath>
#include <stdio.h>

using namespace std;

int find(int n) {
	int sum = n;

	while (n) {
		sum = sum + (n % 10);
		n /= 10;
	}

	return sum;

}

int main() {
	int n;
	cin >> n;

	int answer = 0;

	for (int i = 1;i <= n;i++) {
		answer = find(i);
		if (answer == n) {
			cout << i;
			return 0;
		}
	}

	cout << 0;

}

 

2) 주석 있는 VERSION

#include <iostream>
#include <cmath>
#include <stdio.h>

using namespace std;

int find(int n) {
	int sum = n;

	//분해합 구하기
	while (n) {
		sum = sum + (n % 10);
		n /= 10;
	}

	return sum;

}

int main() {
	int n;
	cin >> n;

	int answer = 0;

	//1부터 차례로 분해합 구하고, 분해합과 n 값이 일치할 때의 값 출력
	//return 0 으로 멈춰주기
	for (int i = 1;i <= n;i++) {
		answer = find(i);
		if (answer == n) {
			cout << i;
			return 0;
		}
	}

	//일치하지 않을 경우 0 출력
	cout << 0;

}