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