[Algorithm Study] 백준 1110

SeokHwan An·2022년 7월 4일
0

문제 출처 : https://www.acmicpc.net/problem/1110

문제 정리

1.한자리 수가 입력된 경우에는 앞에 '0'이 있다 생각하고 각 자리수 더하기
2.주어진 N과 새로 결정된 수(원래 수 맨 뒷자리 + 각 자리의 수의 합의 맨 뒷자리) 같으면 그 횟수를 출력
3.N의 값이 0인 경우에는 답이 항상 1이다.

어려운 문제는 아니었으나 정수 타입과 문자열 타입으로 변경해가면서 해결해 나가는 것이 핵심이었습니다. 자바의 경우 정수 타입에서 문자열 타입으로 변경하는 메소드로는 String.valueOf()를 활용했고 문자열 타입에서 정수 타입으로 변경하는 메소드는 Integer.parseInt()를 활용했습니다.

소스 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int check1 = N;
        int answer = 100;
        int cnt = 0;
        
        while(true){
            if(N == 0){ //주어진 N의 값이 0인 경우
                cnt = 1;
                break;
            }
            String next = String.valueOf(check1);
            if(next.length() == 1){ //주어진 N의 길이가 1인 경우
                answer = Integer.parseInt(next + next);
                cnt++;
                if(N == answer){
                    break;
                }
                check1 = answer;
            }
            else{ //주어진 N의 길이가 2인 경우
                int check2 = 0;
                for(int i = 0; i < next.length(); i++){
                    char check3 = next.charAt(i);
                    check2 += check3 - '0';
                }
                answer = Integer.parseInt(next.substring(next.length()-1) +  String.valueOf(check2).substring(String.valueOf(check2).length()-1));
                cnt++;
                if(N == answer){
                    break;
                }
                check1 = answer;
            }
        }
        System.out.println(cnt);
    }
}

0개의 댓글