본문 바로가기
Problem Solving/SWEA

[SWEA] 3750. Digit sum

by 테리는당근을좋아해 2020. 3. 4.

문제

자연수 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

댓글