2023. 11. 17. 11:17ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1251
-> ์ด์ ๋ฌธ์ ํ์ด
1. ์ฌ๊ท ํจ์
์ค๋ช
์์ฐ์ N์ด ์ ๋ ฅ๋๋ฉด ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ์ฌ 1๋ถํฐ N๊น์ง๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ ์ N(3<=N<=10)์ด ์ ๋ ฅ๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
์์ ์ถ๋ ฅ 1
1 2 3
๋ฌธ์ ํ์ด 1
public void DFS(int n)
{
if (n == 0) {
return;
}else {
DFS(n-1);
System.out.print(n + " "); // 1 2 3
}
}
๐พ : ์น์ 7์ ๋ฌธ์ ์ฑ์ ์ ์ ๊ณตํ์ง ์๋ ์น์ ์ด๋ค. ์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ท ํจ์์ ๋ํ ์ค๋ช ์ ์ํ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ์ ๋ต์ ์ฑ์ ํ ํ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฅ ๋ฌธ์ ๋ง ์ ๊ณตํด์ค๋ค.
(์ฌ์ค ์ ๋ต์ ์ป๊ณ ์ถ์ผ๋ฉด ์ฌ๊ท ํจ์ ์ฌ์ฉ ์ํ๊ณ for๋ฌธ์ ํตํด์ ๊ทธ๋ฅ 1 2 3 ์ถ๋ ฅํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ !)
์ฐ์ ์ฌ๊ท ํจ์๋ ์๊ธฐ ์์ ์ ๊ณ์ ํธ์ถํ๋ ํจ์์ด๋ค.
์๊ธฐ ์์ ์ ๊ณ์ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ๋ฌดํ ๋ฐ๋ณต์ ๋น ์ง ์ ์์ด if-else ๋ฌธ์ ๊ฑฐ์ ํญ์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ท ํจ์ ๋ฌธ์ ๋ฅผ ํ ๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ์คํ ํ๋ ์์ ์ง์ ๊ทธ๋ ค๊ฐ๋ฉด์ ํธ๋ ๊ฒ๋ ์ถ์ฒํ๋ค.
( ์ฌ๊ท ํจ์ ๊ด๋ จ ๋ฌธ์ ๋ง ๋์ค๋ฉด ๋ชปํ๊ณ ์ฉ์ฉ ๋งค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ ๊ทธ๋ด ์์ ..ใ )
์๋ฌดํผ ์ด ๋ฌธ์ ๋ n ์ซ์๊ฐ ์ฃผ์ด์ง๋ฉด 1 ๋ถํฐ n๊น์ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
public void DFS(int n)
{
if (n == 0) {
return;
}else {
System.out.print(n + " ");
DFS(n-1);
}
}
-> ์ฒ์์ ๋๋ ์ด๋ ๊ฒ ํ์์๋๋ฐ ์ด๋ ๊ฒ ํ๋ฉด 3 2 1 ์ถ๋ ฅ๋๋ค.
์๋ํ๋ฉด DFS(3) -> DFS(2) -> DSF(1) ๋ก ์ด๋ ๊ฒ ์ฐจ๋ก๋๋ก ํธ์ถ๋ ๋ 3 ์ถ๋ ฅํ๊ณ DFS(2) ํธ์ถํ๊ณ , 2 ์ถ๋ ฅํ๊ณ DFS(1) ํธ์ถํ๊ธฐ ๋๋ฌธ์ด๋ค.
public void DFS(int n)
{
if (n == 0) {
return;
}else {
DFS(n-1);
System.out.print(n + " "); // 1 2 3
}
}
๋ฐ๋ผ์ ์ด๋ ๊ฒ ์์ ์ ํธ์ถํ๋ ํจ์ ๋ฐ์ ์ถ๋ ฅ๋ฌธ์ ๋ฃ์ด๋๋ฉด DFS(3) -> DFS(2) -> DSF(1) ์ ํ ๋ 1 2 3 ์ผ๋ก ์ฐจ๋ก๋๋ก ์ถ๋ ฅ๋๋ค.
์ด๋ฅผ ๊ฐ์์์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ฃผ์ ์ ์บก์ณํด์๋ค. ใ ใ
์ฐ์ DFS(3) ์ ๋จผ์ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ์คํ์ ๊ฐ์ฅ ๋จผ์ ์์ธ๋ค.
๊ทธ๋ฆฌ๊ณ 3์ ํธ์ถํ๊ธฐ ์ ์ DFS(2)๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ line 6๊น์ง๋ง ํ๋ค๋ ๊ฒ์ ํจ๊ป ๊ธฐ์ตํ๋ค. (DFS(3) ํจ์๊ฐ ์์ง ์๋๋ฌ๋ค๋ ์๊ธฐ์)
DFS(2)๋ ํจ์๋ฅผ ๋ค ๋ง์น๊ธฐ ์ ์ DFS(1)์ ํธ์ถํ๋ค. ๋ฐ๋ผ์ DFS(2) ๋ line 6 ๊น์ง๋ง ์ํํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ๊ณ ์๋ค.
DFS(1) ๋ DFS(0) ์ ํธ์ถํ๊ณ , line 6 ๊น์ง ์ํํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ๊ณ ์๋๋ฐ DFS(0) ์ ์ด์ ์๋ฌด๊ฒ๋ ์ํ์ํ๊ณ return ํ๊ณ ๋๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์ DFS(1)๋ก ๋์์ค๊ณ , line 6 ๋ค์๋ถํฐ ์ํํ๋ค. ๋ฐ๋ผ์ 1์ ๋จผ์ ์ถ๋ ฅํ๊ณ DFS(1) ํจ์๋ฅผ ์ข ๋ฃํ๋ค.
๊ทธ ๋ค์ DFS(2)๋ก ๋์์์, ๋ง์ฐฌ๊ฐ์ง๋ก line 6 ๋ค์๋ถํฐ ์ํํด 2๋ฅผ ์ถ๋ ฅํ๊ณ DFS2(2) ํจ์๋ฅผ ์ข ๋ฃํ๋ค.
๋ง์ง๋ง์ผ๋ก DFS(3) ์ผ๋ก ๋์์ 3 ์ถ๋ ฅ์ ์คํํ๊ณ , DFS(3) ํจ์๋ฅผ ์ข ๋ฃํ๋ค.