๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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.