본문 바로가기
공부/코딩 연습하기

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

by 소소하지만유니크한 2019. 10. 7.
728x90

백준 1110번 문제 설명

 

이번 코드의 중점은 알고리즘보다 JAVA의 기본 메소드 사용에 익숙해지는 데에 있다. 때문에 모든 언어에서 사용할 수 있는 알고리즘으로 구현한 코드와 JAVA 메소드를 사용한 코드 두가지를 보여주고자 한다. 모든 언어에서 사용할 수 있는 방법은 수학적으로 10의 자리와 1의 자리는 각 num / 10과 num % 10 이다. 즉, 숫자를 10으로 나눴을 때의 몫과 나머지로 나타낼 수 있다. 

 

전체 성공 코드 

1. JAVA 메소드를 사용한 방법

import java.util.Scanner;

public class Main
{
    public static int sumValue(int N) {
        String num = String.valueOf(N);
        int sum_digit = 0;
        for (int i = 0; i < num.length(); i++) {
		    sum_digit += Character.getNumericValue(num.charAt(i));
	    }
	    return sum_digit % 10;
    }
    
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int cnt = 0;
		int new_N = N;
		
		while (true) {
		    cnt++;
		    new_N = (new_N % 10) * 10 + sumValue(new_N);
		    if (new_N == N) break;
		}
		System.out.println(cnt);
	}
}

2. JAVA 메소드를 사용하지 않은 방법

import java.util.Scanner;

public class Main
{
    
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int cnt = 0;
		int new_N = N;
		
		while (true) {
		    new_N = (new_N % 10) * 10 + (new_N % 10 + new_N / 10) % 10;
		    cnt++;
		    if (new_N == N) break;
		}
		System.out.println(cnt);
	}
}

 

결과화면

728x90

댓글