๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5568)
< ์นด๋ ๋๊ธฐ >
๋ฌธ์ ํ์ด
์กฐํฉ์ ์ฌ์ฉํ์ฌ ์ ์๋ฅผ ๋ง๋ ํ ์ค๋ณต์ ํ๋จํ๊ธฐ ์ํด set์ ๋ฃ์ ํ set์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class _5568_ { // ์นด๋ ๋๊ธฐ
static String arr[], result[];
static boolean visited[];
static Set<Integer> set;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int k = Integer.parseInt(bf.readLine());
arr = new String[n];
result = new String[k];
visited = new boolean[n];
set = new HashSet<>();
for (int i = 0; i < n; i++) {
arr[i] = bf.readLine();
}
search(0, k);
System.out.println(set.size());
}
private static void search(int idx, int k) {
if (idx == k) {
String str = "";
for (int i = 0; i < k; i++) {
str += result[i];
}
set.add(Integer.parseInt(str));
return;
}
for (int i = 0; i < arr.length; i++) {
if (!visited[i]) {
visited[i] = true;
result[idx] = arr[i];
search(idx + 1, k);
visited[i] = false;
}
}
}
}
Main
๋ณ์)
n : ์นด๋ ์
k : ์ ํํ๋ ์นด๋ ์
arr : ์นด๋ ์ ์ฅ ๋ฐฐ์ด
result : ์ ํํ ์นด๋ ์ ์ฅ ๋ฐฐ์ด
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
set : ์กฐํฉํ ์ ์ ์ ์ฅ
- ์นด๋ ์(n), ์ ํํ๋ ์นด๋ ์(k) ์ ๋ ฅ
- ์นด๋๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ์ ์ฅ(arr)
- search ํจ์ ํธ์ถ
- ๋ง๋ค ์ ์๋ ์ ์์ ๊ฐ์(set์ ํฌ๊ธฐ) ์ถ๋ ฅ
Search
- k๊ฐ๋งํผ ์นด๋๋ฅผ ์ ํํ๋ค๋ฉด set์ ์ถ๊ฐ
- ์นด๋ ์(n)๋งํผ ๋ฐ๋ณต
: ์์ง ์ฌ์ฉํ์ง ์์ ์นด๋๋ผ๋ฉด ์ฌ์ฉ ํ ๋ค์ ์นด๋๋ฅผ ์ ํํ๊ธฐ ์ํด search ํจ์ ํธ์ถ
: search ํจ์ ํธ์ถ ํ ๋ค์ ์กฐํฉ์ ์ํด ์ฌ์ฉํ์ง ์์์ผ๋ก ์ ์ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 3077_์์ง์๋ (0) | 2023.10.13 |
---|---|
[Baekjoon] 1972_๋๋ผ์ด ๋ฌธ์์ด (0) | 2023.10.12 |
[Baekjoon] 11507_์นด๋์ ํธ (0) | 2023.10.10 |
[Baekjoon] 25192_์ธ์ฌ์ฑ ๋ฐ์ ๊ณฐ๊ณฐ์ด (0) | 2023.10.09 |
[Baekjoon] 16943_์ซ์ ์ฌ๋ฐฐ์น (0) | 2023.10.06 |