πŸ“μž¬κ·€ν•¨μˆ˜ μ΄ν•΄ν•˜κΈ°

10_2pangΒ·2023λ…„ 6μ›” 5일
0

βš½οΈνŠΈλŸ¬λΈ”μŠˆνŒ…

λͺ©λ‘ 보기
58/94
post-thumbnail

πŸ‘¨β€πŸ’»Β μ‚¬κ±΄


DFS 문제λ₯Ό ν’€κΈ°μœ„ν•΄ 기본적으둜 μž¬κ·€ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„μ•Όν•œλ‹€. 이번기회λ₯Ό 톡해 ν•œλ²ˆ 더 μž¬κ·€ν•¨μˆ˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ³ μž ν•œλ‹€.

βœ…Β ν•΄κ²°


μ½”λ“œλ₯Ό 톡해 μ•Œμ•„λ³΄μž.

function callback(level){
		if(level===0) return;
		else{
				callback(level-1);
				console.log(level);
		}
}
callback(3);

기본적인 μž¬κ·€ν•¨μˆ˜μ˜ 예λ₯Ό λ“€κ³ μ™€λ³΄μ•˜λ‹€.

처음 callback(3) κ°€ μ‹€ν–‰λ˜λ©΄μ„œ μŠ€νƒμ— callback(3) μ΄λΌλŠ” ν”„λ ˆμž„μ΄ μƒκΈ°κ²Œλœλ‹€.

μ΄λ•Œ, callback(3) 의 μŠ€νƒμ•ˆμ—λŠ” μ§€μ—­λ³€μˆ˜,λ§€κ°œλ³€μˆ˜ 그리고 λ³΅κ·€μ£Όμ†Œκ°€ μžˆλ‹€.(μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°μœ„ν•΄ κ°„λ‹¨νžˆ)

그럼 callback(3) μ•ˆμ— μžˆλŠ” μ½”λ“œλ₯Ό μ°¨λ‘€λ‘œ μ‹€ν–‰ν•˜κ²Œ λœλ‹€.

일단 if 문은 κ·ΈλŒ€λ‘œ μ§€λ‚˜κ°€κ²Œ 되고, else 문으둜 λΉ μ§€κ²Œ λ˜λŠ”λ°, μ΄λ•Œ callback(3-1) 이 μ‹€ν–‰λ˜λ©΄μ„œ μŠ€νƒμ€ μΌμ‹œμ€‘μ§€κ°€ 되고 callback(3-1) 의 ν”„λ ˆμž„μ΄ μΆ”κ°€κ°€ λœλ‹€.

μœ„ 과정을 λ°˜λ³΅ν•˜μ—¬, μ•„λž˜λΆ€ν„° callback(3),callback(2),callback(1),callback(0) 이 μŒ“μ΄κ²Œ λœλ‹€.

μŠ€νƒμ€ ν›„μž…μ„ μΆœμ΄κΈ° λ•Œλ¬Έμ— callback(0) λΆ€ν„° μ‹€ν–‰λ˜λ©΄μ„œ pop λœλ‹€.

callback(0) 은 if 문을 ν†΅κ³Όν•˜μ—¬ κ·Έλƒ₯ λ¦¬ν„΄λ˜λ©΄μ„œ μ’…λ£Œλ©λ‹ˆλ‹€. κ·Έ ν›„, λ³΅κ·€μ£Όμ†Œλ‘œ λ‹€μ‹œ 볡귀λ₯Ό ν•˜κ³  popλ©λ‹ˆλ‹€.

μ΄λ•Œ μ£Όν™©μƒ‰μœΌλ‘œ ν˜•κ΄‘νŽœ μΉ ν•΄μ ΈμžˆλŠ” μœ„μΉ˜λ‘œ λ³΅κ·€ν•©λ‹ˆλ‹€.

callback(1) 은 callback(0) 을 μ‹€ν–‰μ‹œμΌ°κΈ°λ•Œλ¬Έμ— λ‹€μŒ μ€„λ‘œ λ„˜μ–΄κ°‘λ‹ˆλ‹€.

console.log κ°€ λ™μž‘λ˜λ©΄μ„œ 좜λ ₯ν•©λ‹ˆλ‹€.

μ’…λ£Œκ°€ λ˜λ©΄μ„œ 볡귀 μ£Όμ†Œλ‘œ 볡귀λ₯Ό ν•˜κ³  μŠ€νƒμ—μ„œ pop λ©λ‹ˆλ‹€.

μœ„μ™€ 같은 과정을 κ±°μ³μ„œ μ΅œμ’…μ μœΌλ‘œ

1

2

3

이 좜λ ₯λ©λ‹ˆλ‹€.

profile
μ£Όλ‹ˆμ–΄ ν”„λ‘ νŠΈμ—”λ“œ 개발자 이광렬 μž…λ‹ˆλ‹€ 🌸

0개의 λŒ“κΈ€