본문 바로가기
PS/BOJ

백준 14381 자바 - 숫자세는 양 (Small) (boj 14381 java)

by Nahwasa 2022. 3. 27.

문제 : boj14381

 

 

  0부터 9까지의 모든 숫자를 체크하는건 HashSet을 사용하거나(size()가 10이 된다면 모두 찾은 것), 10칸짜리 배열을 사용하면 할 수 있다.

 

  이제 시뮬레이션을 만들면 된다. 어떤 시뮬레이션이냐면, N을 입력받은 후 1N, 2N, 3N, ... 하고 적당히 100N 까지 각 숫자를 만들면서 각 자리수를 HashSet이나 배열에 담는다. 중간에 10개의 숫자가 모두 나왔다면 중지하고, 그렇지 않다면 적당히 큰 수 까지 직접 가보면 된다.

 

예를들어 다음과 같다.

N이 11이었다면 다음과 같은 숫자가 체크될 것이다.

1N = 11 -> 1

2N = 22 -> 2

...

9N = 99 -> 9

10N = 110 -> 0

 

최종적으로 10N일 때 10개의 수를 모두 찾았고, 110을 출력하면 된다.

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        for (int tc = 1; tc <= t; tc++) {
            int n = Integer.parseInt(br.readLine());
            HashSet<Integer> hs = new HashSet<>();
            int cur = n;
            for (int i = 1; i <= 100; i++, cur+=n) {
                int tmp = cur;
                while (tmp != 0) {
                    hs.add(tmp%10);
                    tmp/=10;
                }
                if (hs.size() == 10)
                    break;
            }
            sb.append(String.format("Case #%d: ", tc)).append(hs.size()!=10?"INSOMNIA":cur).append('\n');
        }
        System.out.print(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글