PS/코딩 문제 풀이 모음

[ java ] 백준 ( 2231 분해합 )

은솜솜솜 2023. 5. 11. 16:41
728x90

2231번 분해합

(브론즈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

 

* 문제 요약

특정 수의 분해합 생성자를 찾는 문제이다.

분해합이란 해당 숫자 + 각 자릿수의 합이다

245의 분해합은 245+2+4+5로 256이 된다. 그러면 245는 256의 생성자가 된다.

 

* 풀이 요약

단순 브루투포스 알고리즘 문제이다.

그냥 for 반복문으로 1부터 n까지의 분해합을 구하다가,

생성자를 찾으면 break 하는 식으로 문제를 풀었다.

 

 

(정답 코드)

import java.util.Scanner;

public class B1_분해합 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner s = new Scanner(System.in);
		
		int n=s.nextInt();
		int j=0; //i값 복사
		int sum=0; //분해합
		int ans=0; //찾은 가장 작은 생성자
		
		for(int i=0; i<=n; i++) {
			j=i; //i는 써야해서 변형시킬 수 없으니 j변수에 복사해둔다 :)
			sum=i; //분해합 = 해당 숫자 + 그 숫자의 자릿수 합
			while(j>0) { //각 자릿수 합 구하기
				sum+=j%10;
				j/=10;				
			}
			
            //분해합이 입력받은 값과 일치하면 break
			if(sum==n) {
				ans=i;
				break;
			}
		}
		
		System.out.println(ans);
	}

}
728x90