"꾸준하고 완벽한 한 걸음"

PS/Baekjoon Online Judge

[백준 05568] 카드 놓기 [Java]

kimyoungrok 2025. 3. 17. 14:40
728x90

문제

https://www.acmicpc.net/problem/5568

 


풀이

N개의 카드 중 K개를 골라서 만들어지는 숫자의 종류를 세는 문제다.

고르는 순서에 따라 숫자가 달라지기 때문에 순열을 사용했다.

        for (int i = 0; i < N; ++i) {
            if (!visited[i]) {
                visited[i] = true;
                permutation.add(A[i]);
                permutations(permutation);
                permutation.remove(permutation.size() - 1);
                visited[i] = false;
            }
        }
    }

만약 K개를 모두 골랐다면, 하나의 문자열로 합치고 집합에 추가하면 된다.

    private static void permutations(List<String> permutation) {
        if (permutation.size() == K) {
            StringBuilder sb = new StringBuilder();
            for (String num : permutation) {
                sb.append(num);
            }
            set.add(sb.toString());
            return;
        }

소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/05568.java

728x90