문제
자연수 n에 대해 함수 f(n)은 n의 각 자릿수를 더한 값이다.
예를 들어 n = 588432라면, f(n) = 5 + 8 + 8 + 4 + 3 + 2 = 30인 것이다.
어떤 자연수 n이 주어질 때, n이 한 자리수가 될 때까지 n에 f(n)을 대입하는 것을 반복하면, 최종적으로 n이 어떤 값이 되는지 구하는 프로그램을 작성하라.
예를 들어 n = 588432라면 f(n) = 30이므로 n = 30이 되고, 이 때 f(n) = 3으로 최종적으로 n = 3이 되는 것이다.
풀이방법
1) 숫자를 문자열로 입력받고 각 자리수를 더해서 새로운 문자열로 만든다.
2) 문자열의 길이가 1이 될 때까지 1)의 과정을 반복한다.
3) 문자열의 길이가 1일 때 값을 출력한다.
소스코드
package samsung;
import java.util.*;
public class s_3750 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
for(int t = 1; t <= tc; t++) {
String s = sc.next();
int n = s.length();
while(true) {
if(n == 1) {
System.out.println("#" + t + " " + s);
break;
}
long num = 0;
for(int i = 0; i < n; i++) {
num += s.charAt(i) - '0';
}
s = String.valueOf(num);
n = s.length();
}
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 7584. 자가 복제 문자열 (0) | 2020.03.04 |
---|---|
[SWEA] 6190. 정곤이의 단조 증가하는 수 (0) | 2020.03.04 |
[SWEA] 7853. 오타 (2) | 2020.02.29 |
[SWEA] 5688. 세제곱근을 찾아라 (0) | 2020.02.29 |
[SWEA] 8840. 아바바바 (0) | 2020.02.29 |
댓글