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
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 26265] 멘토와 멘티 [Java] (0) | 2025.03.16 |
---|---|
[Official Learn Next.js] Learn ‘App Router’ - Chapter 2. CSS Styling (0) | 2025.03.16 |
[백준 19564] 반복 [Java] (0) | 2025.03.15 |
[백준 04150] 피보나치 수 [Java] (0) | 2025.03.15 |
[백준 13419] 탕수육 [Java] (0) | 2025.03.15 |