ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋งฅ๋ฝ์์ ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ ํ์ ๋ฌธ์ ๋ฅผ ํ ๋ฒ ํด๊ฒฐํ ๋ค์ ์ฌ๊ท๋ฅผ ํตํด ์๋ฃจ์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฌ์ฉํ์ฌ ํฌ๊ณ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌ ๊ฐ๋ฅํ ํ์ ๋ฌธ์ ๋ก ๋๋๋ ๊ธฐ์ ์ ๋งํฉ๋๋ค. ์ฌ๊ท๋ ํจ์๊ฐ ์ง์ ๋๋ ๊ฐ์ ์ ์ผ๋ก ์์ ์ ํธ์ถํ๋ ํ๋ก์ธ์ค๋ก, ๊ฐ ํจ์ ํธ์ถ์ ๋ ์์ ๊ท๋ชจ์์ ๋์ผํ ๋ฌธ์ ์ ์๋ก์ด ์ธ์คํด์ค๊ฐ ๋ฉ๋๋ค. ์ฌ๊ท๋ ํํ ์ฌ์ํ๊ฑฐ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ์ธ ๊ธฐ๋ณธ ์ฌ๋ก์ ๋๋ฌํ ๋๊น์ง ๊ณ์๋ฉ๋๋ค. ์ด ์์ ์์ ํจ์๋ ์์ฒด ํธ์ถ์ ์ค์งํ๊ณ ๋ชจ๋ ํ์ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ด ๊ฒฐํฉ๋์ด ์๋ ๋ฌธ์ ์ ๋ํ ์ต์ข ์๋ฃจ์ ์ ์์ฑํฉ๋๋ค.
์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉ์ ๋ฌธ์ ์ ์์ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์ผ๋ฐํํ์ฌ ์์ ํ ์๋ฃจ์ ์ ํ์ฑํจ์ผ๋ก์จ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ด ๋์ถ๋๋ ๊ท๋ฉ๋ฒ์ ์ํ์ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ํธ๋ฆฌ ์ํ, ๊ทธ๋ํ ์ํ ๋ฐ ์กฐํฉ ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํฌํจํ์ฌ ๋ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ ์ฉ๋ ์ ์์ต๋๋ค.
์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๋ ๋จ์ํ, ๊ฐ๋ ์ฑ ํฅ์, ์ดํด ๋ฐ ๋๋ฒ๊ทธ ์ฉ์ด์ฑ ๋ฑ ๋ฐ๋ณต ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๋นํด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ๊ณ ๊ณผ๋ํ ํจ์ ํธ์ถ๋ก ์ธํด ์คํ ์ค๋ฒํ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๋จ์ ์ด ์์ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๋จ์ ์๋ ๋ถ๊ตฌํ๊ณ ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ ๋จ์ ๋ณด๋ค ๋ ์ปค์ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค.
AppMasterno-code ํ๋ซํผ์ ์ฌ์ฉํ๋ ์ ๋ฌธ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ก์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๊ณ ๊ตฌ์ถํ ๋ ์ฌ๊ท ๊ธฐ์ ์ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค. ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ํ๋ซํผ์ ํ์ ์ ์ธ ์๊ฐ์ ํ๋ก์ธ์ค ๋์์ด๋๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์๋ฃจ์ ์ ๊ตฌ์ถํ๋ ์ฌ์ฉ์ ์นํ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ์๊ฐ์ ๋ํญ ๋จ์ถํ๊ณ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ฉฐ ์ต์ข ์ ํ์ ์ ๋ฐ์ ์ธ ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ์ ์ฉํ ์ ํ์ ์ธ ์๋ ํผ๋ณด๋์น ์์ด ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ํผ๋ณด๋์น ์์ด์ ์ผ๋ จ์ ์ซ์๋ก, ๊ฐ ์ซ์๋ ์ด์ ๋ ์ซ์์ ํฉ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก 0๊ณผ 1๋ก ์์ํฉ๋๋ค. n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๊ณ์ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ํํ๋ ์ ์์ต๋๋ค.
ํจ์ ํผ๋ณด๋์น(n) {
๋ง์ฝ (n <= 1) {
n์ ๋ฐํ;
}
๋ฐํ ํผ๋ณด๋์น(n - 1) + ํผ๋ณด๋์น(n - 2);
}
์ด ์์์ ํจ์๋ n <= 1์ด๋ผ๋ ๊ธฐ๋ณธ ์ฌ๋ก์ ๋๋ฌํ ๋๊น์ง ๋ ์์ n ๊ฐ์ ์ฌ์ฉํ์ฌ ์์ ์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฌธ์ ์ ๋ ์์ ์ธ์คํด์ค์ ๋ํ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ n๋ฒ์งธ ํผ๋ณด๋์น ์์ ๊ฐ์ ๊ณ์ฐํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํผ๋ณด๋์น ์์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์ํ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๊ตฌํํ ์ ์์ผ๋ฉฐ ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๊ฐ๋ ฅํจ๊ณผ ๋จ์์ฑ์ ๋ณด์ฌ์ค๋๋ค.
์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์๋ ์ซ์์ ๊ณ์น์ ์ฐพ๋ ๊ฒ์ ๋๋ค. ๊ณ์น(n!์ผ๋ก ํ์๋จ)์ n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ชจ๋ ์์ ์ ์์ ๊ณฑ์ ๋๋ค. ๊ณ์น ํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๊ท์ ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค.
ํจ์ ๊ณ์น(n) {
๋ง์ฝ (n <= 1) {
1์ ๋ฐํํฉ๋๋ค.
}
return n * ๊ณ์น(n - 1);
}
ํผ๋ณด๋์น ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณ์น ํจ์๋ ์ฌ๊ท๋ฅผ ํ์ฉํ์ฌ n ๊ณ์ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค! ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋๋๋ค. ํจ์๋ n <= 1์ ๊ธฐ๋ณธ ์ฌ๋ก์ ๋๋ฌํ ๋๊น์ง ์ ์ ๋ ์์ n ๊ฐ์ผ๋ก ์์ ์ ํธ์ถํฉ๋๋ค. ์ด ์์ ์์ ํจ์๋ ์์ฒด ํธ์ถ์ ์ค์งํ๊ณ ํ์ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ด ๊ฒฐํฉ๋์ด ๊ณฑ์ ์ ํตํด n์ ๊ณ์น์ ๊ณ์ฐํฉ๋๋ค. ์ด ์๋ ๋ณต์กํ ์ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์์ด ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ์ฐ์ํจ๊ณผ ๊ฐ๋ ฅํจ์ ๋์ฑ ๊ฐ์กฐํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋๊ณ ๊ฐ ํ์ ๋ฌธ์ ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํด๊ฒฐํจ์ผ๋ก์จ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ ์ค ์ ์๋ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ๊ธฐ์ ์ ๋๋ค. AppMaster ์ ๊ฐ์ ํ๋ซํผ์์ ์ฌ๊ท ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๊ฐ๋ฐ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋, ํ์ง ๋ฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ฌ๊ท์ ์ฅ์ ๊ณผ ์ ์ฌ์ ์ธ ๋จ์ ์ ์ดํดํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ํ๋ก์ ํธ์์ ์ฌ๊ท ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ์ธ์ , ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง์ ๋ํด ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.