문제


현재 각 자리수의 수를 체크해서 0 ~ 9 까지 모두 체크되면 종료시켜야한다. 비트 연산을 활용해 0000000000 에서 시작해서 1111111111 가 되면 종료한다.

실수


코드


import java.util.Scanner;
import java.io.FileInputStream;

class Solution
{
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T;
        T = sc.nextInt();

        int numbers, N, n;
        for (int test_case = 1; test_case <= T; test_case++) {
            numbers = 0B0000000000;
            N = sc.nextInt();
            n = N;
            numbers = checkBit(numbers, n);

            while (true) {
                if ((numbers & 0B1111111111) == 0B1111111111) {
                    break;
                } // numbers == 1111111111

                n += N;
                numbers = checkBit(numbers, n);
            }
            System.out.println("#" + test_case + " " + n);
        }
    }

    private static int checkBit(int numbers, int N) {
        String strN = Integer.toString(N);
        for (int i = 0; i < strN.length(); i++) {
            int a = (1 << (strN.charAt(i) - '0'));
            numbers = numbers | a; // 현재 자리 수 추가하기, 0 표현을 위해 + 1
        }
        return numbers;
    }
}

업데이트:

댓글남기기