π«μ¬κ·ν¨μ
λ΄λΆμ μΌλ‘ μκΈ° μμ μ νΈμΆνλ ν¨μλ₯Ό μ¬κ·ν¨μλΌκ³ νλ€.
λ°λμ μ’ λ£ μ‘°κ±΄μ΄ νμνλ€λ νΉμ§μ κ°μ§κ³ μλ€. μ¬κ· νΈμΆ(μμ μ νΈμΆ)μ λ무 λ§μ΄ νκ² λλ©΄ μ€ν λ©λͺ¨λ¦¬ μμμ λ무 λ§μ 곡κ°μ ν λΉνκ² λμ΄ μ€ν μ€λ²νλ‘μ°κ° λ°μν μ μλ€λ μ μ μ£Όμν΄μΌ νλ€. κ·Έλμ μ¬κ· ν¨μλ₯Ό ꡬνν λλ μ΅μ μ κ²½μ° μΌλ§λ λ§μ μ¬κ· νΈμΆμ΄ λ°μνλ μ§ μ μ΄ν΄λ³΄μμΌ νλ€. λν μ¬κ· ν¨μμ λν μ΄ν΄λκ° λμΌλ©΄ μ½λμ κ°λ μ±μ΄ μ’μμ§ μ μμΌλ, κ°λ μ λͺ¨λ₯΄λ μ¬λμ΄ λ³΄λ©΄ μ½λλ₯Ό μ΄ν΄νκΈ° μ΄λ ΅λ€λ λ¨μ μ΄ μλ€.
μΌν보면 κ°μ λ μ½λκ° μλ€. λ μ½λμ μ°¨μ΄μ μ΄ λ¬΄μμΌκΉ?
Case 1
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Solution {
public void DFS(int n){
if(n == 0) return;
else{
System.out.print(n + " ");
DFS(n-1);
}
}
public static void main(String[] args){
Solution T = new Solution();
T.DFS(5);
}
}
|
cs |
Case 2
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Solution {
public void DFS(int n){
if(n == 0) return;
else {
DFS(n-1);
System.out.print(n + " ");
}
}
public static void main(String[] args){
Solution T = new Solution();
T.DFS(5);
}
}
|
cs |
λ μ½λλ μμ² ν° μ°¨μ΄μ μ κ°κ³ μλ€.
μΌμ΄μ€ 1 λ²μ κ²½μ° 5 4 3 2 1 μ΄ μΆλ ₯ λμ§λ§, μΌμ΄μ€ 2λ²μ κ²½μ° 1 2 3 4 5 κ° μΆλ ₯λλ€.
μ΄λ° μ°¨μ΄μ μ λ§λλ μ΄μ κ° λ°λ‘ μ¬κ· ν¨μμ νΉμ§μ μλ€.
Runtime Data Area μμ μ€ν νλ μμλ μ§μλ³μ, λ§€κ°λ³μ, λ³΅κ· μ£Όμ κ° λ΄μμ Έ 컨νΈλ‘€ λλ€.
1οΈβ£Case 1
μΌμ΄μ€ 1μ 보μ.
λ§€κ°λ³μμ 5λ₯Ό λ£μ΄μ DFS() ν¨μλ₯Ό νΈμΆνμλ€. λ§€κ°λ³μλ 0 μ΄ μλλ―λ‘ 4λ² νμ΄ μ€νλλ€. 5λ² νμ΄ μ€νλμ΄ 5κ° μΆλ ₯λκ³ , μκΈ° μμ μΈ DFS() ν¨μ(λ§€κ°λ³μ : 4)λ₯Ό νΈμΆνκ³ κΈ°μ‘΄ DFS(5)λ λ§€κ°λ³μμ λ³΅κ· μ£Όμλ₯Ό κ°κ³ μ€νμ PUSH λμ΄ sleep μνκ° λλ€. μ΄ κ³Όμ μ΄ λ°λ³΅λλ€.
λ§€κ°λ³μκ° 0μ΄ λμ΄ 3λ² νμ΄ μ€νλμ΄ ν¨μκ° μ’ λ£λκ² λλ€. κ·Έλ¬λ©΄ μ€νμ μμ¬μλ ν¨μλ₯Ό POPν΄μ μ€ννκ² λλ€. κ°μ₯ 맨μμ μλ DFS(1) μ΄ POPλλ€. DFS(1) μ 7λΌμΈλΆν° μ€νλλ©°, 8λΌμΈμ΄ μ€νλκ³ λλ€μλ ν¨μκ° μ’ λ£ λλ©΄μ μ€νμμ μ λ€μ΄ μλ DFS(2) λ₯Ό POP νμ¬ μ€ννλ€. μ΄ κ³Όμ μ΄ λ°λ³΅λλ€.
κ·Έλ¦ΌμΌλ‘ λνλ΄λ©΄ λ€μκ³Ό κ°λ€.
2οΈβ£Case 2
μΌμ΄μ€ 2λ²μ κ²½μ°λ₯Ό 보μ.
λ§€κ°λ³μμ 5λ₯Ό λ£μ΄μ DFS() ν¨μλ₯Ό νΈμΆνμλ€. λ§€κ°λ³μλ 0 μ΄ μλλ―λ‘ 4λ² νμ΄ μ€νλλ€. κ·Έ λ€μ λ°λ‘ μκΈ° μμ μΈ DFS() ν¨μ(λ§€κ°λ³μ : 4)λ₯Ό νΈμΆνκ³ κΈ°μ‘΄ DFS(5)λ λ§€κ°λ³μμ λ³΅κ· μ£Όμλ₯Ό κ°κ³ μ€νμ PUSH λμ΄ sleep μνκ° λλ€. μ΄ κ³Όμ μ΄ λ°λ³΅λλ€.
λ§€κ°λ³μκ° 0μ΄ λμ΄ 3λ² νμ΄ μ€νλμ΄ ν¨μκ° μ’ λ£λκ² λλ€. κ·Έλ¬λ©΄ μ€νμ μμ¬μλ ν¨μλ₯Ό POPν΄μ μ€ννκ² λλ€. κ°μ₯ 맨μμ μλ DFS(1) μ΄ POPλλ€. DFS(1) μ 6λΌμΈλΆν° μ€νλλ©° μ΄λ λ§€κ° λ³μμΈ nμ΄ 1μ΄λ―λ‘ 1λ₯Ό μΆλ ₯νλ€. κ·Έλ¦¬κ³ 7, 8λΌμΈμ΄ μ€νλκ³ λλ€μλ ν¨μκ° μ’ λ£ λλ©΄μ μ€νμμ μ λ€μ΄ μλ DFS(2) λ₯Ό POP νμ¬ μ€ννλ€. DFS(2) λ λκ°μ΄ 6λΌμΈμμ 2λ₯Ό μΆλ ₯νκ² λκ³ , 8λΌμΈ κΉμ§ ν¨μκ° μ’ λ£λ λ€ μ€νμ μ΅μλ¨ ν¨μλ₯Ό POP νλ€. μ΄ κ³Όμ μ΄ λ°λ³΅λλ€.
κ·Έλ¦ΌμΌλ‘ λνλ΄λ©΄ λ€μκ³Ό κ°λ€.
πμ¬κ· ν¨μμ λνμ μΈ μ
μ¬κ·ν¨μμ λνμ μΈ λ¬Έμ λ‘λ νΌλ³΄λμΉ μμ΄, ν©ν λ¦¬μΌ , μμ΄κ³Ό μ‘°ν©, κ·Έλ¦¬κ³ DFS λ¬Έμ λ€μ΄ μλ€.
νλ‘κ·Έλλ¨Έμ€ - νΌλ³΄λμΉ μ
https://school.programmers.co.kr/learn/courses/30/lessons/12945
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
DFS
Flood fillμ μ΄μ©νμ¬ νκΈ°
https://school.programmers.co.kr/learn/courses/30/lessons/154540
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
'Algorithm > BFS & DFS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algorithm] λ°±νΈλνΉ / DFS μ°¨μ΄ - μ λ§€λͺ¨νΈν κ°λ λ€μ‘κΈ° (0) | 2023.10.27 |
---|
λκΈ