최대 1 분 소요

[백준 1110번] 더하기 사이클

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package _1월_2주차;
 
import java.util.Scanner;
public class 백준_손수경_정답_1110 {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int temp = num;
        int cnt = 1;
        while (true) {
            if ((int)Math.log10(temp) == 0) { //규칙상 나온 숫자가 한자리수인 경우
                temp += (temp * 10);
            }
            else {
                int first = (temp % 10* 10;
                int second = (temp % 10+ (temp / 10);
                if ((int)Math.log10(second) != 0) { //각 자리수의 합이 한자리수가 아닌 경우 
                                                    //-> 2자리수임을 알기 위해서는 String으로 데이터형을 변환하는 방법도 있지만, 밑이 10인 경우를 이용해서 구할 수도 있다.
                    second = second % 10;
                }
                temp = first + second;
            }
        
            if (temp == num) {break;}
            cnt++;
        }
        System.out.println(cnt);
    }
 
}
 
cs

문자열의 길이 구하기

문자열.length를 통해서 문자열의 길이를 구할 수 있다.

숫자형의 길이 구하기

방법 1

  1. 숫자형을 문자열로 형 변환
  2. 문자열.length를 통해서 길이를 구함
  3. 숫자와의 비교가 필요하다면 다시 형 변환을 해줌
    방법 2
    Math.log10(숫자형 변수) 를 이용한다.
    밑이 10인 경우는 10부터 0이 아닌 다른 값이 나오기 때문에 변수의 길이를 간접적으로 확인할 수 있다.

댓글남기기