본문 바로가기

알고리즘 문제풀이/SWEA

[SWEA 1288] 새로운 불면증 치료법 with JAVA

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

import java.util.Scanner;

class Solution
{
    public static void main(String args[])
    {
        boolean[] visited;
        Scanner sc = new Scanner(System.in);
        int T;
        T = sc.nextInt();
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int N = sc.nextInt();
            int K;
            int i = 1;
            visited = new boolean[10];
            while (true){
                K = N * i;
                count(K, visited);
                if (check(visited)) break;
                i++;
            }
            System.out.printf("#%d %d\n", test_case, K);
        }
    }
    public static boolean check(boolean[] visited){
        for (int i = 0; i < 10; i++){
            if (!visited[i]) return false;
        }
        return true;
    }
    public static void count(int N, boolean[] visited){
        String str_N = Integer.toString(N);
        for (int i = 0; i < str_N.length(); i++){
            visited[str_N.charAt(i) - '0'] = true;
        }
    }
}

1. 어려웠던 점:

- X

 

2. 알게된 점:

- 복습

 

3. 알고리즘 풀이:

- visited[10]은 0~9를 보았는지 확인하는 배열이다.

count 함수를 통해, 숫자를 문자열로 변경 후, 각 자리의 숫자를 visited 함수에 체크해준다.

check 함수를 통해, visited의 모든 원소가 true인지 확인 후, true면 while 루프를 종료시킨 후, 답을 출력한다.