5๏ธโฃ CS15 [Swift Algorithm Note] ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด 2 (feat. BS) ์ ๋ฒ์๋ DP๋ก ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (LIS)๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์๋๋ฐ, ์ค๋์ DP๋ณด๋ค ํจ์ฌ ์๊ฐ๋ณต์ก๋๊ฐ ์ข์ ์ด๋ถ ํ์ (BS)๋ก ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ๋ ์์๋ณด๊ณ , ์ด๋ถํ์์ผ๋ก LIS๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ๋ ๊ตฌํํด๋ณด์. (LIS์ ๋ํ ์ค๋ช , ๊ทธ๋ฆฌ๊ณ DP๋ก LIS ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๊ถ๊ธํ์ ๋ถ๋ค์ ์๊ธฐ๐๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!) 2021.08.28 - [๐ Algorithm Note/๐ with Swift] - [Swift Algorithm Note] ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (feat. DP) [Swift Algorithm Note] ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (feat. DP) ์ค๋์ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (LIS)์ ๋ํด ์ ๋ฆฌํด๋ณด๋ คํ๋ค. LIS๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง์ง๋ง, .. 2021. 8. 29. [Swift Algorithm Note] ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (feat. DP) ์ค๋์ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด (LIS)์ ๋ํด ์ ๋ฆฌํด๋ณด๋ คํ๋ค. LIS๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง์ง๋ง, ๊ทธ ์ค์์๋ ๊ฐ์ฅ ๊ฐํธํ DP๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ค. (DP์ ๋ํด ๊ถ๊ธํ์ ๋ถ๋ค์ ์๊ธฐ๐๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!) 2021.08.28 - [๐ Algorithm Note/๐ with Swift] - [Swift Algorithm Note] ๋์ ๊ณํ๋ฒ (feat. Fibonacci) [Swift Algorithm Note] ๋์ ๊ณํ๋ฒ (feat. Fibonacci) ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ,, ๋์ ํ ์ํ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ฅ๋จ๋ฆฌ๊ณ .. ์๊ณ ๋ณด๋ LIS๋ผ๋ ํ์ด ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ ๋ฌธ์ ์๋ค. ๊ทผ๋ฐ LIS๋ DP(๋์ ๊ณํ๋ฒ)์ ์ฌ์ฉํด์ผ ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๊ณ ํ๋๋ผ.. ๋ฐ๋ผ์ ์ค๋ seolhee2750.tistory.com .. 2021. 8. 28. [Swift Algorithm Note] ๋์ ๊ณํ๋ฒ (feat. Fibonacci) ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ,, ๋์ ํ ์ํ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ฅ๋จ๋ฆฌ๊ณ .. ์๊ณ ๋ณด๋ LIS๋ผ๋ ํ์ด ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ ๋ฌธ์ ์๋ค. ๊ทผ๋ฐ LIS๋ DP(๋์ ๊ณํ๋ฒ)์ ์ฌ์ฉํด์ผ ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๊ณ ํ๋๋ผ.. ๋ฐ๋ผ์ ์ค๋์ ๋์ ๊ณํ๋ฒ์ ๋ํด ๊ณต๋ถํด๋ณธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ๐ ๋์ ๊ณํ๋ฒ (Dynamic Programming) ๋์ ๊ณํ๋ฒ์ ์ด๋ฆ๊ณผ๋ ์ข ๋งค์นญ์ด ์๋๋๋ฏ.?..ํ๋ฐ ํ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ์ผ๋ก ๋๋์ด ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ฌ ์์ ๋ฌธ์ ๋ฅผ ํ์ด๋ด๋ ์ํฅ์ ์ ๊ทผ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์์ ์ค๋ช ์ ๋ฐ๋ฅด๋ฉด ๋์ ๊ณํ๋ฒ์ ์ธ์ ์ฌ์ฉํ ์ ์๋์ง ๊ตฌ์ฒดํํ ์ ์๋ค. ๐ 1. ๊ฐ์ ๋ฐ๋ณต์ ์ํํ๋ ๋ถ๋ถ์ด ์กด์ฌํ๋ค. 2. ๋์ผํ ๋ฐ๋ณต ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ผ์ ํด์ผํ๋ค. ๐ Memoization ์ถ๊ฐ๋ก, ์ ์ค๋ช ์ ๋ค์ ํ ๋ฒ ๋ณด๋ฉด ์์.. 2021. 8. 28. [Swift Algorithm Note] ๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์ (feat. Fibonacci) ์ ๋ฒ ๊ธ์์ ์ฌ๊ท ํจ์์ ๋ํด ๋ค๋ค๋ค๋ฉด, ์ด๋ฒ์ '๊ผฌ๋ฆฌ' ์ฌ๊ท ํจ์์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๋ ํจ์๋ฅผ ๊ตฌํํด๋ณด๋ฉด์, ์ฌ๊ทํจ์์ ๋ฌธ์ ์ ์ ์๊ฒ ๋์๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ฌธ์ ์ ์ ๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์๊ฐ ํด๊ฒฐํด ์ค๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค,,!! ๋ฐ๋ผ์ ์ค๋์ ๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์๋ฅผ ๊ณต๋ถํด๋ณด๊ณ , ๊ตฌํ ๋ฐฉ๋ฒ๊น์ง ํ์คํ ์ดํดํด๋ณด์. ๐ ๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์(Tail Recursive Call) ๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์๋ ์ผ๋ฐ์ ์ธ ์ฌ๊ท ํจ์์ ๋จ์ ์ ๋ณด์ํ๋ค. ์ผ๋ฐ์ ์ธ ์ฌ๊ท ํจ์๊ฐ ๊ฐ์ง๋ ๋จ์ ์ ๋ฐ๋ก ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ์ ,,!!!๐ฅ ์ผ๋ฐ ์ฌ๊ท์ ๊ฒฝ์ฐ, ์ ๋ฒ ๊ธ์์ ๋ค๋ค๋ฏ ์คํ์ ํจ์ ํธ์ถ์ ํ๋์ฉ ์๊ณ , ๊ฑฐ๊พธ๋ก ๋ฐํ ๊ฐ์ ๋๊ธฐ๋ฉฐ ๊ณ์ฐ์ ์ํํ๋ค. (์ด ๋ด์ฉ์ ์๊ธฐ๐ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!) 2021.07.08 .. 2021. 7. 9. [Swift Algorithm Note] ์ฌ๊ทํจ์ ์ ๋ฆฌ (feat. Factorial) ๋์ถฉ์ ์๊ณ ์์์ง๋ง,, ์ง๊ธ๊น์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ ํํ ๊ฐ๋ ์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์๋ค. ํ์ง๋ง ์ ์ฐจ ๋ฌธ์ ์์ค์ด ๋์์ง๋ฉด์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ํ์ ํ๊ณ ์์ดํ ํ๋ค๋ ๊ฒ์ ๋๋,, ๋ฐ๋ผ์ ์ค๋๋ถํฐ! ๋น๊ต์ ์ฝ๊ณ ํ์์ ์ธ ์๊ณ ๋ฆฌ์ฆ๋ถํฐ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค. ํ์ดํ > Int { if num < 2 { return num } return Factorial(num-1) * num } print(Factorial(3)) // 6 print(Factorial(5)) // 120 ๋จผ์ Factorial ํจ์์ return ๋ฌธ์ ๋ณด๋ฉด, ์์์ ๊ตฌํ num * (num - 1)! ์ ํํํ ๊ฒ์ ํ์ธ ๊ฐ๋ฅํ๋ค. ์ ๋ ฅํ num ๊ฐ์ ๋ํด num - 1์ ํด๋นํ๋ Factorial ํจ์๋ฅผ ํธ์ถํ๊ณ , num ๊ฐ์ ๊ณฑ.. 2021. 7. 8. ์ด์ 1 2 3 ๋ค์