분해합 성공 다국어
2 초 | 192 MB | 64446 | 29833 | 23611 | 46.517% |
문제
어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자릿수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.
자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
출력
첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.
예제 입력 1
216
예제 출력 1
198
BufferedReader로 입력값을 변수 N으로 받는다
자연수 N까지의 가장 작은 수를 구하는 것이므로
for문을 돌려서 int형 변수 num을 i로 지정하고
while문으로 합계 sum 변수에 각각의 자릿수를 더해준다
num이 0보다 클 때까지 10으로 나눈 나머지를 더해주고, 10으로 나눠주면
계속해서 일의 자리 숫자를 더해주고 10으로 나눠주게 된다
그리고 if 조건문을 이용하여 각각의 자릿수를 더한 sum과 원래 숫자 i를 더한 값이 생성자가 된다면
result 값에 i를 담고 break (멈춰준다)
이때 break를 쓰는 이유는 가장 작은 생성자를 구해야 하기 때문이다
그리고 만약에 생성자가 없다면 0을 출력해야 하는데
이때, result 변수가 상단에 0으로 선언되어 있기 때문에 조건문을 통과하지 못한다면 즉 생성자가 없다면
자연스레 0을 출력하게 된다
'TIL > Algorithm' 카테고리의 다른 글
Java 백준 2750번 문제 - 수 정렬하기 (0) | 2021.11.23 |
---|---|
Java 백준 7568번 문제 - 덩치 (0) | 2021.11.18 |
Java 백준 10870번 문제 - 피보나치 수열 (0) | 2021.10.30 |
Java 백준 10872번 문제 - 팩토리얼 (0) | 2021.10.29 |
Java 백준 3053번 문제 - 택시 기하학 (0) | 2021.10.28 |