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

๊ฒฝ๋กœํƒ์ƒ‰(์ธ์ ‘๋ฆฌ์ŠคํŠธ, ArrayList) ๋ณธ๋ฌธ

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

๊ฒฝ๋กœํƒ์ƒ‰(์ธ์ ‘๋ฆฌ์ŠคํŠธ, ArrayList)

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

๊ฒฝ๋กœํƒ์ƒ‰ ์‹œ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ArrayList๋กœ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค

์„ค๋ช…

๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด 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 ArrayList<ArrayList<Integer>> graph;
	static int[] ch;
	public void DFS(int v) {
		if(v==n) {
			answer ++;
		}else { 
			for(int nv : graph.get(v)) {
				if(ch[nv] == 0) {
					ch[nv] = 1;
					DFS(nv);
					ch[nv] = 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 ArrayList<ArrayList<Integer>>();
		for(int i=0; i<=n; i++) {
			graph.add(new ArrayList<Integer>());
		}
		ch = new int[n+1];
		// ๊ฐ’ ๋„ฃ๊ธฐ
		for(int i=0; i<m; i++) {
			int a = in.nextInt();
			int b = in.nextInt();
			graph.get(a).add(b);
		}
		ch[1] = 1;
		T.DFS(1);
		System.out.println(answer);
	}
	
}
Comments