๋ฌธ์
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWErcQmKy6kDFAXi
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
๋ฌธ์ ์ดํด
N๊ฐ์ ์ฌ๋ฃ์ M๊ฐ์ ๊ธ์ง ์์ด ์ฃผ์ด์ง๋ค.
๊ธ์ง ์์ ํฌํจ๋ ์ฌ๋ฃ๋ ๋์์ ๊ฐ์ ๋ฒ๊ฑฐ์ ๋ค์ด๊ฐ ์ ์๋ค.
์กฐ๊ฑด์ ๋ง์กฑํ๋ฉฐ ๋ง๋ค ์ ์๋ ๋ฒ๊ฑฐ ์กฐํฉ์ ๊ฐ์ง์๋ฅผ ๊ตฌํ๋ค. (์๋ฌด ์ฌ๋ฃ๋ ๋ฃ์ง ์์ ๋ฒ๊ฑฐ๋ ๊ฐ๋ฅ)
๋ฌธ์ ํ์ด
๐ก Backtracking (๋ถ๋ถ ์งํฉ)
- ๊ฐ๋ฅํ ๋ชจ๋ ์ฌ๋ฃ ์กฐํฉ์ ๊ฐ์๋ฅผ ์ธ๋ ๋ฌธ์
→ DFS๋ก ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํด ์นด์ดํธ - N ≤ 20์ด๋ผ ์์ ํ์์ด ๊ฐ๋ฅํ๋ค.
- ๊ฐ ์ฌ๋ฃ๋ฅผ ๋ฃ๋๋ค/์ ๋ฃ๋๋ค ๋ ๊ฐ์ง๋ก ๋ถ๊ธฐ
→ ๋ฃ์ ๋๋ ์ด๋ฏธ ๋ฃ์ ์ฌ๋ฃ๋ค๊ณผ ์ถฉ๋ํ์ง ์๋์ง ํ์ธ
์ฝ๋
import java.io.*;
import java.util.*;
public class Solution {
static int n, m, ans;
static List<Integer>[] list;
static boolean[] selected;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= t; tc++) {
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
list = new ArrayList[n + 1];
selected = new boolean[n + 1];
ans = 0;
for (int i = 0; i <= n; i++) {
list[i] = new ArrayList<>();
}
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list[a].add(b);
list[b].add(a);
}
dfs(1);
sb.append("#").append(tc).append(" ").append(ans).append("\n");
}
System.out.println(sb);
}
static boolean isPossible(int idx) {
for (int i = 1; i <= n; i++) {
if (selected[i] && list[i].contains(idx))
return false;
}
return true;
}
static void dfs(int idx) {
ans++;
for (int i = idx; i <= n; i++) {
if (selected[i] || !isPossible(i))
continue;
selected[i] = true;
dfs(i + 1);
selected[i] = false;
}
}
}'๐ญ Problem Solving > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ][Java] 16930. ๋ฌ๋ฆฌ๊ธฐ (4) | 2025.09.09 |
|---|---|
| [BOJ][Java] 14503. ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2025.09.03 |
| [BOJ][Java] 1946. ์ ์ ์ฌ์ (1) | 2025.08.26 |
| [BOJ][Java] 2492. ๋ณด์ (0) | 2025.08.20 |
| [BOJ][Java] 16926. ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1 (4) | 2025.08.07 |