[SWEA][Java] 3421. ์ˆ˜์ œ ๋ฒ„๊ฑฐ ์žฅ์ธ

2025. 8. 29. 09:50ยท๐Ÿ’ญ Problem Solving/Java

๋ฌธ์ œ

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
'๐Ÿ’ญ Problem Solving/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ][Java] 16930. ๋‹ฌ๋ฆฌ๊ธฐ
  • [BOJ][Java] 14503. ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ
  • [BOJ][Java] 1946. ์‹ ์ž… ์‚ฌ์›
  • [BOJ][Java] 2492. ๋ณด์„
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    swea
    dynamic programming
    react
    ๊ตฌํ˜„
    BFS
    ๋ฐฑํŠธ๋ž˜ํ‚น
    La Piscine
    ํŠธ๋ฆฌ
    VR
    CS
    CSS
    unity
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    makefile
    java
    github
    C
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    knapsack
    dfs
    git
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    ์ •๋ ฌ
    HTML
    .h
    42๊ฒฝ์‚ฐ
    ๋ฐฑ์ค€
    ๋งต
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[SWEA][Java] 3421. ์ˆ˜์ œ ๋ฒ„๊ฑฐ ์žฅ์ธ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”