COS-Pro-1차 1급 1번

2020-02-19

위 문제는 YBM COS-Pro의 1차 1급 1번 문제에 관한 설명입니다.


문제

어느 누군가가 타임머신을 타고 과거로 가서 숫자 0이 없는 수 체계를 전파했습니다.

역사가 바뀌어 이제 사람들의 의식 속엔 0이란 숫자가 사라졌습니다.

따라서, 현재의 수 체계는 1, 2, 3, …, 8, 9, 11, 12, …와 같이 0이 없게 바뀌었습니다.

0을 포함하지 않은 자연수 num이 매개변수로 주어질 때, 이 수에 1을 더한 수를 return 하도록 solution 메소드를 완성해주세요.

입력

자연수 num이 solution 메소드의 매개변수로 주어집니다.

  • num은 1 이상 999,999,999,999,999,999 이하의 0을 포함하지 않는 자연수입니다.

출력

자연수 num에 1을 더한 수를 return 해주세요.

예시

num return
9949999 9951111

예시 설명

9,949,999에 1을 더하면 9,950,000이지만 0은 존재하지 않으므로 9,951,111이 됩니다.


import java.util.Scanner;

public class Main {
    private static long solution(long num) {
        num++;
        long digit = 1;
        while (num / digit % 10 == 0) {
            num += digit;
            digit *= 10;
        }
        return num;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long num = scanner.nextLong();
        num = solution(num);
        System.out.println(num);
    }
}

코드 설명

  1. num보다 1증가 시킵니다.

  2. digit을 이용해서 각 자리수마다 0이라는 숫자가 존재하는지 파악을 해야합니다.

  3. num을 digit으로 나누고 %10을 하면 각 자릿수 마다의 값이 0인지를 확인 합니다.

  4. 만약 0이 존재한다면 num에 digit 을 추가합니다.