๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

๊ฒฝ๋กœ ํƒ์ƒ‰(์ธ์ ‘ํ–‰๋ ฌ) ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

๊ฒฝ๋กœ ํƒ์ƒ‰(์ธ์ ‘ํ–‰๋ ฌ)

์š”์ผ์ด 2021. 8. 2. 22:00
๋ฐ˜์‘ํ˜•

์„ค๋ช…

๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด 1๋ฒˆ ์ •์ ์—์„œ N๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ๊ฐ€์ง€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„ ๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์•„๋ž˜ ๊ทธ๋ž˜ํ”„์—์„œ 1๋ฒˆ ์ •์ ์—์„œ 5๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฐ€์ง€ ์ˆ˜๋Š”

1 2 3 4 5

1 2 5

1 3 4 2 5

1 3 4 5

1 4 2 5

1 4 5

์ด 6 ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

 

์ž…๋ ฅ์„ค๋ช…

์ฒซ์งธ ์ค„์—๋Š” ์ •์ ์˜ ์ˆ˜ N(1<=N<=20)์™€ ๊ฐ„์„ ์˜ ์ˆ˜ M๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ M์ค„์— ๊ฑธ์ณ ์—ฐ ๊ฒฐ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ์„ค๋ช…

์ด ๊ฐ€์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ์˜ˆ์ œ

5 9

1 2

1 3

1 4

2 1

2 3

2 5

3 4

4 2

4 5

์ถœ๋ ฅ์˜ˆ์ œ

6

 

 

 

- ๊ตฌํ˜„

import java.util.*;

class Main{
	static int n, m, answer = 0;
	static int[][] graph;
	static int[] ch;
	public void DFS(int v) {
		if(v==n) {
			answer ++;
		}else {
			for(int i=1; i<=n; i++) {
				// v : ํ˜„์žฌ ์ •์ 
				if(graph[v][i] == 1 && ch[i]==0) {
					ch[i] = 1;
					DFS(i);
					ch[i] = 0;
				}
			}
		}
	}
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner in = new Scanner(System.in);
		// ์ •์ ์˜ ๊ฐฏ์ˆ˜
		n=in.nextInt();
		// ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜
		m=in.nextInt();
		// ์ธ์ ‘ํ–‰๋ ฌ
		graph=new int[n+1][n+1];
		ch = new int[n+1];
		for(int i=0; i<m; i++) {
			int a = in.nextInt();
			int b = in.nextInt();
			// ๋ฐฉํ–ฅ๊ฐ’ 1
			graph[a][b] = 1;
		}
		ch[1] = 1;
		T.DFS(1);
		System.out.println(answer);
	}
}
Comments