์ฌ๊ทํจ์์ ์คํ(Stack)
์ฌ๊ทํจ์ : ์๊ธฐ์์ ์ ํธ์ถํ๋ ํจ์
์ด๋ stack ์ด๋ผ๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ๋ค.
์ฌ๊ทํจ์๋ for๋ฌธ ์ฆ ๋ฐ๋ณต๋ฌธ์ ๋์ฒด์์ด๋ค.
n ์ ๋ ฅ๊ฐ์ 3์ผ๋ก ๊ฐ์ ํ๊ณ ์ค๋ช ์ ํด๋ณด๊ฒ ์ต๋๋ค.
12 ์ค: ์ ๋ ฅ๊ฐ n ์ฆ, 3 ์ ๋ฐ์.
13 ์ค: DFS(3): DFSํจ์๋ฅผ ํธ์ถํ์ฌ 3์ ๋๊น.
4 ์ค: ํจ์ DFS (3) if ๋ฌธ ์คํ
5 ์ค: ๋ง์ฝ x ๊ฐ 0๋ณด๋ค ํฌ๋ค๋ฉด ์คํ. 0์ด๊ฑฐ๋ ์์ผ๋ฉด ์ข ๋ฃ
6 ์ค: x ์ถ๋ ฅ -> 3์ด ์ถ๋ ฅ๋จ.
7์ค ; DFS ํจ์ ํธ์ถ [์ด ๋ถ๋ถ์ด ์ฌ๊ทํจ์์ด๋ค. ์๋ํ๋ฉด ์๊ธฐ์์ ์ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ]
DFS(3-1) ๋ก DFS(2)๊ฐ ๋๋ฉฐ ํจ์ DFS๋ฅผ ํธ์ถํจ
๋ค์ 4๋ฒ์ค๋ก ์ฌ๋ผ๊ฐ์ def DFS(2): ๊ฐ ๋๋ฉด์
5๋ฒ์ค: if 2> 0 : ๊ฐ ์คํ๋๊ณ ์ฐธ์ด๋ฏ๋ก
6๋ฒ์ค: print(2) ๋ก ์ธํด์ 2๊ฐ ์ถ๋ ฅ
7๋ฒ์ค: DFS(2-1) ์ด ๋จ. DFS(1)๋ก ์๊ธฐ ์์ ํจ์์ธ DFS๋ฅผ ํธ์ถ [์ฌ๊ทํจ์]
์ด๋ฐ ์๋ฆฌ๋ก ๊ฒ์ ๋ฐ๋ณต๋๋ค๊ฐ
n ์ด 0์ด ๋๋ฉด ์ข ๋ฃ๋จ.
๊ฒฐ๊ณผ๋