DFS vs BFS + ฮฑ

HUSIIยท2023๋…„ 7์›” 30์ผ
0

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
3/6

๐Ÿ’ก ์–ธ์ œ DFS๋ฅผ ์“ฐ๊ณ , ๋˜ ์–ธ์ œ BFS ์“ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค!
โ†’ ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•์„ ์ดํ•ดํ•˜๊ณ , ๋ฌธ์ œ๋ณ„๋กœ ์–ด์šธ๋ฆฌ๋Š”? ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณจ๋ผ์•ผ ๋น ๋ฅด๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ตœ๋Œ€ํ•œ ๊นŠ์ด ์ด๋™ํ•œ ๋’ค, ๋”์ด์ƒ ๊ฐˆ๊ณณ์ด ์—†์„๊ฒฝ์šฐ ์ด์ „ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๊ณ  ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
์žฌ๊ท€ํ•จ์ˆ˜ or ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„


๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœ์„œ (1๋ฒˆ์‹œ์ž‘)
1->2->6->7 (๋‹ค์‹œ1)->3->4->5


void dfs(ํ•ด๋‹น ๋…ธ๋“œ ์ •๋ณด){
	
	for(int i=0;i<cur์˜ ์—ฃ์ง€ ๊ฐœ์ˆ˜;i++){
		if(visited[cur์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค์Œ๋…ธ๋“œ] == true) { // ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์Œ
			continue;
		}

		visited[๋‹ค์Œ๋…ธ๋“œ] = true;
		dfs(๋‹ค์Œ๋…ธ๋“œ์ •๋ณด); // ๋ฐ”๋กœ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ด๋™(๊นŠ๊ฒŒํƒ์ƒ‰ํ•จ)
	}
}

์ตœ๋Œ€ํ•œ ๋„“๊ฒŒ ์ด๋™ํ•œ ๋‹ค์Œ(์ฃผ์œ„), ๋” ์ด์ƒ ๊ฐˆ๊ณณ์ด ์—†์„๊ฒฝ์šฐ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ด๋™ํ•ด์„œ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„


๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ์ˆœ์„œ(1๋ฒˆ์‹œ์ž‘)
1->2->3->6->4->7->5
์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

q.push(root๋…ธ๋“œ์ •๋ณด)
while(!q.empty()){
	cur = q.front();
	q.pop();
	
	for(int i=0;i<cur์˜ ์—ฃ์ง€ ๊ฐœ์ˆ˜;i++){
		if(visited[cur์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค์Œ๋…ธ๋“œ] == true) { // ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์Œ
			continue;
		}

		visited[๋‹ค์Œ๋…ธ๋“œ] = true;
		q.push(๋‹ค์Œ๋…ธ๋“œ์ •๋ณด); // ํ์— ๋„ฃ์–ด๋†“๊ณ  ๋‚˜์ค‘์— ๋ฐฉ๋ฌธ(ํ˜„์žฌ๋Š” ์ฃผ์œ„๋…ธ๋“œ๋จผ์ € ๋ฐฉ๋ฌธํ•œ๋‹ค)
	}
}

DFS vs BFS

์–ธ์ œ DFS๋ฅผ ์“ฐ๊ณ  ๋˜ ์–ธ์ œ BFS๋ฅผ ์“ธ๊นŒ

CASE 1 - ๋ชจ๋“  ๋…ธ๋“œ(์ •์ )๋ฅผ ํƒ์ƒ‰ํ• ๋•Œ

์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋˜ ์ƒ๊ด€์—†๋‹ค

๋ฌธ์ œ ์˜ˆ์‹œ
10026๋ฒˆ: ์ ๋ก์ƒ‰์•ฝ / 2573๋ฒˆ: ๋น™์‚ฐ
์œ„ ๋ฌธ์ œ๋“ค์€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ์ฐพ๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋˜ ์ƒ๊ด€์—†๋‹ค

CASE 2 - ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์„๋•Œ (์ตœ๋Œ€ํ•œ ๋…ธ๋“œ๋ฅผ ์ ๊ฒŒ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ• ๋•Œ) or ์ฃผ์œ„๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ• ๋•Œ

์ธ์ ‘๋…ธ๋“œ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” BFS๊ฐ€ ์œ ๋ฆฌํ•˜๋‹ค.

๋ฌธ์ œ ์˜ˆ์‹œ
7576๋ฒˆ: ํ† ๋งˆํ†  / 2206๋ฒˆ: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ
์œ„ ๋ฌธ์ œ๋“ค์€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ, ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.
์ด๋Š” DFS๋กœ ๊ตฌํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ BFS์— ๋น„ํ•ด ๋น„ํšจ์œจ์ ์ด๋‹ค. (์–ธ์ œ๊ฐ€ ์ตœ์†Œ์ธ์ง€ ๋ฐ”๋กœ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์—†๋‹ค)
๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋Š” BFS๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.

CASE 3 - ๊ฒฝ๋กœ์˜ ํŠน์ง•์„ ์ €์žฅํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๋Š” ๋ฌธ์ œ

ํ˜„์žฌ ๊ทธ๋ž˜ํ”„์˜ ์‚ฌ์ดํด์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ, ์ง€๊ธˆ๊นŒ์ง€ ์™”๋˜ ๋…ธ๋“œ๋“ค์˜ ์ •๋ณด๋“ค์„ ์ €์žฅํ•ด๋†”์•ผ ํ•˜๋Š” ๋ฌธ์ œ, ...

์ด๋•Œ๋Š” DFS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค.
๋ฌผ๋ก  ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ด์„œ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋Š” BFS๋กœ๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฌธ์ œ ๋Œ€๋ถ€๋ถ„์€ DFS๋ฅผ ์ผ์„๋•Œ ์ข€๋” ์‰ฝ๊ฒŒ ํ’€๋ฆฐ๋‹ค.


DFS vs BFS ์ •๋ฆฌ

์ตœ๋‹จ๊ฑฐ๋ฆฌ๋Š” BFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งค์šฐ ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, BFS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€๋งŒ,
DFS๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฌธ์ œ๋Š” (์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋ฌธ์ œ์— ๋น„ํ•ด) ๋ฐ”๋กœ๋ฐ”๋กœ ์บ์น˜๊ฐ€ ์•ˆ๋œ๋‹ค.
๋”ฐ๋ผ์„œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ์ด์™ธ์— ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ์›ฌ๋งŒํ•˜๋ฉด DFS๋กœ ์‹œ๋„๋ฅผ ํ•ด๋ณด์ž.


ํŠน์ดํ•œ DFS (์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜)

์‚ฌ์‹ค ์ด๋ฒˆ๊ธ€์€ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค๋ฃจ๊ณ  ์‹ถ์–ด์„œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค

์œ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ visited๋ฅผ ์ด์šฉํ•ด์„œ ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋Š” ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ง€๊ธˆ๋ถ€ํ„ฐ ์•Œ์•„๋ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ์„๋•Œ visited=true ์ฒดํฌ ํ›„ ์ฃผ๋ณ€ ๋…ธ๋“œ๋ฅผ ์ „๋ถ€ ํƒ์ƒ‰ํ›„ ์ž๊ธฐ์ž์‹  ๋…ธ๋“œ์˜ visited๋ฅผ false๋กœ ๋Œ๋ฆฌ๋Š” ๊ธฐ์กด๊ณผ๋Š” ์‚ด์ง? ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

void dfs(ํ•ด๋‹น ๋…ธ๋“œ ์ •๋ณด){
	
	for(int i=0;i<cur์˜ ์—ฃ์ง€ ๊ฐœ์ˆ˜;i++){
		if(visited[cur์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค์Œ๋…ธ๋“œ] == true) { // ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์Œ
			continue;
		}

		visited[๋‹ค์Œ๋…ธ๋“œ] = true;
		dfs(๋‹ค์Œ๋…ธ๋“œ์ •๋ณด); // ๋ฐ”๋กœ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ด๋™(๊นŠ๊ฒŒํƒ์ƒ‰ํ•จ)
		visited[๋‹ค์Œ๋…ธ๋“œ] = false; // ************** false๋กœ ๋‹ค์‹œ ๋˜๋Œ๋ฆผ ***************
	}
}

์ด๋Ÿฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์–ธ์ œ์ผ๊นŒ?

๊ธฐ์กด์˜ dfs, bfs ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ๋ชปํ‘ธ๋Š” ๊ฒฝ์šฐ์— ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

๋‹ค์Œ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž.

์ด๋Ÿฌํ•œ ํ˜•ํƒœ์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋Š”๋ฐ 1๋ฒˆ์—์„œ ์ถœ๋ฐœํ–ˆ์„๋•Œ ์ตœ๋Œ€ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด๋ณด์ž(๊ฐ€์ค‘์น˜๋Š” ๋ชจ๋‘ 1)
์ผ๋ฐ˜์ ์ธ dfs๋กœ ํ‘ผ๋‹ค๋ฉด ๋ฐฉ๋ฌธ ์ˆœ์„œ๋Š”
1 โ†’ 2 โ†’ 6 โ†’ 7
(๋‹ค์‹œ1) โ†’ 3 โ†’ 4 โ†’ 5

์—ฌ๊ธฐ์„œ ๋๋‚˜๊ฒŒ ๋œ๋‹ค. (visited๋•Œ๋ฌธ์— ์ „์— ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์Œ)
์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋‹ต์€ 4๋กœ ๋‚˜์˜ค๋Š”๋ฐ, ์‚ฌ์‹ค ์ด๋ฌธ์ œ์˜ ๋‹ต์€ (1โ†’3โ†’4โ†’5โ†’6โ†’7) 6์ด ๋œ๋‹ค.

์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๊นŒ?

visited๋•Œ๋ฌธ์— ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
(3์„ ๋จผ์ € ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋ฉด ๋‹ต์„ ๊ตฌํ–ˆ๊ฒ ์ง€๋งŒ, ์ด๋Ÿฐ ์กฐ๊ฑด๋ถ€ ๋‹ต์€ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค)

์ด์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„๋ฅผ ์ด์šฉํ–ˆ์„๋•Œ ํŠน์ • ๋…ธ๋“œ๋ฅผ ํ•œ๋ฒˆ๋งŒ ๋ฐฉ๋ฌธํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ์— ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) ๋…ธ๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฌธ์ œ


ํŠน์ดํ•œ DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ ์˜ˆ์‹œ

์‹ค์ œ ๋ฌธ์ œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž
1987๋ฒˆ: ์•ŒํŒŒ๋ฒณ

2์ฐจ์› ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง„ ์ƒํ™ฉ์—์„œ, ์ฒซ๋ฒˆ์งธ ์œ„์น˜([0][0])์—์„œ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด๋™์„ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ์ƒˆ๋กœ ์ด๋™ํ•œ ์นธ์— ์ ํ˜€ ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ ์ง€๊ธˆ๊นŒ์ง€ ์ง€๋‚˜์˜จ ๋ชจ๋“  ์นธ์— ์ ํ˜€ ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ๊ณผ๋Š” ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ์ฆ‰, ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด ์ ํžŒ ์นธ์„ ๋‘ ๋ฒˆ ์ง€๋‚  ์ˆ˜ ์—†๋‹ค. ์ด๋•Œ ์ตœ๋Œ€ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ฌธ์ œ๋Š” ๊ธฐ์กด์˜ dfs, bfs๋กœ๋Š” ํ’€์ˆ˜์—†๋‹ค.
์ตœ๋Œ€ ์ด๋™๊ฑฐ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์กด์˜ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•ด์•ผ๋งŒ ํ•œ๋‹ค.


๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๋ณด์ž
1103๋ฒˆ: ๊ฒŒ์ž„

์œ„ ๋ฌธ์ œ์™€ ์กฐ๊ฑด์€ ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ, ์ด๋ฌธ์ œ ์—ญ์‹œ ์ตœ๋Œ€ํ•œ ๋…ธ๋“œ๋ฅผ ๋งŽ์ด ๋ฐฉ๋ฌธํ–ˆ์„๋•Œ์˜ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์ตœ๋Œ€ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ๊ฐœ์ˆ˜์™€ ๊ด€๋ จ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์ž

๋‹ค์Œ ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜๊ธฐ ์ „์— visited์— true๋ฅผ ์ž…๋ ฅํ–ˆ๊ธฐ๋•Œ๋ฌธ์—, ํ˜„์žฌ ์œ„์น˜์—์„œ ์ด์ „๊นŒ์ง€ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
visited์—†์ด dfs๋ฅผ ๋Œ๋ฆฌ๋ฉด ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์งˆ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.


ํŠน์ดํ•œ DFS์˜ ์‹œ๊ฐ„๋ณต์žก๋„

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์–ด๋Š์ •๋„์ผ๊นŒ?

ํ–‰๊ณผ ์—ด์ด n์ธ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด๋™๊ฐ€๋Šฅํ•œ 2์ฐจ์› ๋ฐฐ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ฝ”๋“œ๋ฅผ n=2๋ถ€ํ„ฐ n=6๊นŒ์ง€ ๋Œ๋ ค๋ดค๋Š”๋ฐ,

n๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ ํšŸ์ˆ˜
25
351
41271
590111
618470411

๋๋„ ์—†์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋Š” ๋ฌธ์ œ๋“ค์€ ์ธํ’‹์ด ๊ต‰์žฅํžˆ ์ž‘๊ณ , visited ์™ธ์— ๋‹ค๋ฅธ ์ œํ•œ์กฐ๊ฑด์ด ๋งŽ์ด ๋‹ฌ๋ ค์žˆ๋‹ค.

์‚ฌ์‹ค ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•œ ๋…ธ๋“œ๋ฅผ ๊ต‰์žฅํžˆ ๋งŽ์ด ๋ฐฉ๋ฌธํ•œ๋‹ค -> ์ƒํƒœ๊ฐ€ ์ค‘๋ณต๋œ๋‹ค
์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ธ๋•Œ๋Š” ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด dp๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.


์ •๋ฆฌ

๊ทธ๋ƒฅ ์ตœ๋Œ€ํ•œ ๋…ธ๋“œ๋ฅผ ์ ๊ฒŒ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒฝ์šฐ์˜์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค๋ฉด BFS,
ํŠน์ • ๋…ธ๋“œ๋ฅผ ํ•œ๋ฒˆ๋งŒ ๋ฐฉ๋ฌธํ•˜๋ฉด ์•ˆ๋˜๋Š” ๋ฌธ์ œ(ex - ๋…ธ๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฌธ์ œ)๋Š” ํŠน์ดํ•œ DFS,

(์ธํ’‹์ด ๊ต‰์žฅํžˆ ์ž‘์„๋•Œ & ๋‹ค๋ฅธ ์ œํ•œ์กฐ๊ฑด์ด ์žˆ์„๋•Œ ๊ฐ€๋Šฅ)

๋‚˜๋จธ์ง€๋Š” DFS๋ฅผ ์“ฐ์ž


(Appendix) ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ํ• ๋•Œ visited

๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ํ• ๋•Œ ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด visited ๋ฐฐ์—ด์„ ์ด์šฉํ•œ๋‹ค.
์ด๋•Œ ๋ฌธ์ œ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ visited๊ฐ€ ์žˆ๋‹ค.

(ํ–‰๊ณผ ์—ด์ด n์ธ 2์ฐจ์› ๋ฐฐ์—ด ๊ธฐ์ค€)

  1. ์ผ๋ฐ˜์ ์ธ visited
    https://www.acmicpc.net/problem/1012 ์œ ๊ธฐ๋† ๋ฐฐ์ถ” ๋ฌธ์ œ
    ์ผ๋ฐ˜์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ์ด๋‹ค.
    n2n^2๋งŒํผ visited ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

  2. ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ visited
    (2-1) https://www.acmicpc.net/problem/13459 ๊ตฌ์Šฌํƒˆ์ถœ ๋ฌธ์ œ
    ๋นจ๊ฐ„ ๊ตฌ์Šฌ๊ณผ ํŒŒ๋ž€ ๊ตฌ์Šฌ, ๊ฐ๊ฐ ๊ตฌ์Šฌ์˜ ์œ„์น˜ ๋ณ„๋กœ visited๋ฅผ ์ฒดํฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.
    n2โˆ—n2n^2 * n^2๋กœ visited ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ค˜์•ผ ํ•œ๋‹ค.
    (2-2) https://school.programmers.co.kr/learn/courses/30/lessons/67259#
    ๊ฒฝ์ฃผ๋กœ ๊ฑด์„ค ๋ฌธ์ œ
    ๊ฐ™์€ ์œ„์น˜๋ผ๋„ ์œ„์—์„œ ์™”๋Š”์ง€, ์˜ค๋ฅธ์ชฝ์—์„œ, ์™ผ์ชฝ์—์„œ, ์•„๋ž˜์—์„œ ์™”๋Š”์ง€ 4๊ฐ€์ง€๋ฅผ ๋”ฐ๋กœ ์ฒดํฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.
    n2โˆ—4n^2 * 4๋กœ visited ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ค˜์•ผ ํ•œ๋‹ค.

    ์ด๋ฌธ์ œ๋ฅผ ํŠน์ดํ•œ DFS์™€ DP๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.


์ œ ์ƒ๊ฐ์„ ๊ทธ๋Œ€๋กœ ์ผ๊ธฐ ๋•Œ๋ฌธ์— ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ง€์ , ํ”ผ๋“œ๋ฐฑ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

profile
๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ์ƒ๊ธด ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 7์›” 30์ผ

์ข‹์€ ๊ธ€์ด๋„ค์š”. ๊ณต์œ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

1๊ฐœ์˜ ๋‹ต๊ธ€