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