์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค!
์ค๋์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ์ค ๋์ ๊ณํ๋ฒ(Dynamic Programming)์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋์ ๊ณํ๋ฒ์ด ๋ฌด์์ธ์ง ์ ๋ฆฌํด๋ณด๊ณ , ๋์ ๊ณํ๋ฒ์ ๋ํ์ ์ธ ์์ ์ธ <ํผ๋ณด๋์น ์์ด> ๋ฌธ์ ๋ฅผ ํตํด ์ ์ฉ๊น์ง ํด๋ณด๋๋ก ํ ๊ฒ์!
๋์ ๊ณํ๋ฒ(Dynamic Programming, DP)
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(์ค์ฌ์ DP)๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๋์ ๊ณํ๋ฒ์ ํฐ ๋ฌธ์ ๋ฅผ ์๊ฒ ๋๋๊ณ , ๊ฐ์ ๋ฌธ์ ๋ผ๋ฉด ํ ๋ฒ์ฉ๋ง ํ์ด ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ์ ๋๋ค.
๋์ ๊ณํ๋ฒ์์๋ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization) ๊ธฐ๋ฒ์ด ํต์ฌ์ด๋ผ๊ณ ํ ์ ์๋๋ฐ์!
๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ๋ฒ์ด๋, ํ ๋ฒ ๊ตฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅํด๋๊ณ ๊ฐ์ ์์ ๋ค์ ํธ์ถํด ์ ์ฅํ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฉ๋ชจ์ด์ ์ด์ ์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ์บ์ฑ(Caching)์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
๋์ ๊ณํ๋ฒ์ ๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ๋ฒ์ ํ์ฉํด ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํด์ผํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ๋ฐ๋ณต ์ํ์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฝ๊ฐ ๋ ์ฌ์ฉํ๋ฉด์ ์ฐ์ฐ ์๋๋ฅผ ๋น์ฝ์ ์ผ๋ก ์ฆ๊ฐ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋์ ๊ณํ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ํ์ ์ธ ์์ ์ธ <ํผ๋ณด๋์น ์์ด>์ ํตํด์ ๋ ์์ธํ ์ดํดํด๋ณด๋๋ก ํฉ์๋ค!
ํผ๋ณด๋์น ์์ด๋ก ๋์ ๊ณํ๋ฒ์ ์ดํดํด๋ณด์
ํผ๋ณด๋์น ์์ด์ด๋, ์ด๋ค ์์ด์ ํญ์ด ์์ ๋ ํญ์ ํฉ๊ณผ ๊ฐ์ ์์ด์ ๋งํฉ๋๋ค.
ํผ๋ณด๋์น ์์ด์ ๊ฐ๋จํ๊ฒ ํ์ฉํ ๋ฌธ์ ์ธ ํ๋ก๊ทธ๋๋จธ์ค์ ํผ๋ณด๋์น ์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ฉฐ ๋์ ๊ณํ๋ฒ์ ์ดํดํด๋ณด๋๋ก ํ ๊ฒ์!
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ์ค๋ช
ํผ๋ณด๋์น ์๋ F(0) = 0, F(1) = 1์ผ ๋, 1 ์ด์์ n์ ๋ํ์ฌ F(n) = F(n-1) + F(n-2) ๊ฐ ์ ์ฉ๋๋ ์ ์ ๋๋ค.
์๋ฅผ๋ค์ด
- F(2) = F(0) + F(1) = 0 + 1 = 1
- F(3) = F(1) + F(2) = 1 + 1 = 2
- F(4) = F(2) + F(3) = 1 + 2 = 3
- F(5) = F(3) + F(4) = 2 + 3 = 5
์ ๊ฐ์ด ์ด์ด์ง๋๋ค.
2 ์ด์์ n์ด ์ ๋ ฅ๋์์ ๋, n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ 1234567์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- n์ 2 ์ด์ 100,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์์ ๋ฐ ์ค๋ช
n | return |
3 | 2 |
5 | 5 |
ํผ๋ณด๋์น์๋ 0๋ฒ์งธ๋ถํฐ 0, 1, 1, 2, 3, 5, ... ์ ๊ฐ์ด ์ด์ด์ง๋๋ค.
๋ฌธ์ ํ์ด
1. ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ๊ตฌํ
ํ๋ก๊ทธ๋๋จธ์ค Level2 ๋์ด๋์ธ ์ด ๋ฌธ์ ๋ n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๋๋ฐ, ์ด ์๋ฅผ 1234567์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ผ๋ ์กฐ๊ฑด๋ง ์ถ๊ฐ๋ ๋ฌธ์ ์ธ๋ฐ์! ๋จผ์ , ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ด๋ณธ๋ค๋ฉด
func solution(_ n: Int) -> Int {
if n <= 1 {
return n
} else {
return (solution(n-1) + solution(n-2)) % 1234567
}
}
์์ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค!
ํ์ง๋ง.. ๋ฌธ์ ๋..ํจ์จ์ฑ ์ธก๋ฉด์์ ์ข์ง ๋ชปํ ์ฝ๋๋ผ๋ ์ ์ ๋๋ค!(์๊ฐ์ด๊ณผ๊ฐ ์๋ฅด๋ฅด๐ฅฒ)

์ด๋ ๊ฒ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ ํ์ด๊ฐ ์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ํ์ด์ผ๊น์??๐ค
๋ง์ฝ 4๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ 1234567์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๊ธฐ ์ํด solution(4)๋ฅผ ์คํํ๋ฉด,
์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํํ๋ก ํจ์๊ฐ ํธ์ถ๋๊ฒ ๋ฉ๋๋ค.

๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋์ผํ ํจ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฏธ ํ ๋ฒ ๊ณ์ฐํ์ง๋ง, ๊ณ์ ํธ์ถ๋ ๋ ๋ง๋ค ๋์ผํ ๊ฐ์ด ๊ณ์ฐ๋๊ฒ ๋๋ ๊ฒ์ ๋๋ค. ์์ ๊ทธ๋ฆผ์์ soultion(1)์ ์ด 3๋ฒ ํธ์ถ๋์์ต๋๋ค. solution(n)์์ n๊ฐ์ด ์ปค์ง๋ฉด ์ปค์ง์๋ก ์ค๋ณต ํธ์ถ๋๋ ํจ์์ ์ค๋ณต ํ์ ๋ํ ๋์ด๋๊ฒ ๋๋๋ฐ, ์ด๋ n๊ฐ์ด ์ปค์ง์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ ์คํ ์๋๊ฐ ๋จ์ด์ง๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2. ๋์ ๊ณํ๋ฒ์ ์ด์ฉํ ๊ตฌํ
ํผ๋ณด๋์น ์์ด์ ์ ํ์์ ์์ ๊ฐ์ด ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํด ๋ง๋ค ์๋ ์์ง๋ง, ๋จ์ํ ๋งค๋ฒ ๊ณ์ฐํ๋๋ก ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ๋์ ๊ณํ๋ฒ์ ์ด์ฉํด ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ๋ฒ์ ํ์ฉํด ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ๋ฐ๋ณต ์ํ์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํด๋ด ์๋ค!
func solution(_ n: Int) -> Int {
var cache = [0, 1]
for i in 2...n {
cache.append((cache[i-1] + cache[i-2]) % 1234567)
}
return cache[n]
}
์์ ๊ฐ์ด ๊ตฌํํ ์ ์๋๋ฐ์, ์ฝ๋๋ฅผ ๋ณด๋ฉด cache๋ผ๋ Array ์ ์ฅ ๊ณต๊ฐ์ ํ์ฉํด (์ด์ ๋ ์์ ํฉ % 1234567)์ธ ๊ฐ์ ์ ์ฅํด๋๊ณ ,
์ค๋ณต ๊ณ์ฐ ์์ด n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ 1234567์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๊ณ ์์ต๋๋ค. (๊ทธ๋ฅ n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๊ณ ์ถ๋ค๋ฉด for ๋ฃจํ์์ % 1234567 ๋ถ๋ถ๋ง ์ญ์ ํด์ฃผ๋ฉด ๋๊ฒ ์ฃ ?)
๋ง์ฝ solution(4)๋ฅผ ์คํํ๋ค๋ฉด, (0, 1์ ์คํ ์ ์ด๊ธฐ๊ฐ์ผ๋ก cache์ ์ ์ฅ๋๋) 2, 3๋ฒ์งธ ๊ฐ๊น์ง๋ฅผ ๋จผ์ ๊ตฌํ์ฌ ์ ์ฅํ๊ณ , ์ด ๊ฐ๋ค์ด ๋ชจ๋ ์ ์ฅ๋์ด์๋ ๋ฉ๋ชจ๋ฆฌ์์ ํ์ํ ๊ฐ๋ค์ ๊ฐ์ ธ์ cache[2] + cache[3] ์ฐ์ฐ์ ํตํด ์ต์ข ๊ฐ์ ๋์ถํ๊ฒ ๋ฉ๋๋ค. ์์์ ์ฌ๊ทํจ์๋ก ๊ตฌํํ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ํจ์์ ์ค๋ณต ์คํ์ด ์๊ธฐ ๋๋ฌธ์ ์คํ ์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ง๊ฒ ๋ฉ๋๋ค.
๋์ ๊ณํ๋ฒ์ ์ฌ์ฉ ์กฐ๊ฑด
์์ ๋ฅผ ํตํด ์ฌ๊ทํจ์ ํ์ด์ ๋น๊ตํด๋ณด๋ ์ด์ ๋์ ๊ณํ๋ฒ์ด ์ด๋ค ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ์ธ์ง ๊ฐ์ด ์ค์์ฃ ??
ํ์ง๋ง ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋์ ๊ณํ๋ฒ์ ์ ์ฉํ์ฌ ํด๊ฒฐํ ์๋ ์์ต๋๋ค! ๋์ ๊ณํ๋ฒ์ ๋ค์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1. ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ์๋ค.
2. ์์ ๋ฌธ์ ์์ ๊ตฌํ ์ ๋ต์ ๊ทธ๊ฒ์ ํฌํจํ๋ ํฐ ๋ฌธ์ ์์๋ ๋์ผํ๋ค.
๋์ ๊ณํ๋ฒ์ ๋ ๊ฐ์ง ๋ฐฉ์
์์ <ํผ๋ณด๋์น ์> ๋ฌธ์ ์์ ์ ์ฉํ ๋์ ๊ณํ๋ฒ์ ํ์ด ๋ฐฉ๋ฒ์ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด ์์ ๋ฌธ์ ๋ถํฐ ๋ต์ ๋์ถํด ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋๊ณ ์ด๋ฅผ ์ด์ฉํด ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ด์์ต๋๋ค. ์ด๋ ๊ฒ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ ๋ฐฉ์์ ์์ ๋ฌธ์ ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ต์ ๋์ถํ๋ค๊ณ ํ์ฌ ๋ณดํ ์ (Bottom-Up) ๋ฐฉ์์ด๋ผ๊ณ ๋งํฉ๋๋ค.
๋์ ๊ณํ๋ฒ์๋ ๋ณดํ ์ ๋ฐฉ์๊ณผ ๋๋ถ์ด ํ๋ค์ด(Top-Down) ๋ฐฉ์๋ ์กด์ฌํฉ๋๋ค.
ํ๋ค์ด ๋ฐฉ์์ ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ์ฌ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ธ๋ฐ์, ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ ๋ฌธ์ ๋ฅผ ํธ์ถํ๋ค๊ณ ํ์ฌ ํ๋ค์ด ๋ฐฉ์์ด๋ผ๊ณ ๋งํฉ๋๋ค.
์์์ ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ ๋ฐฉ์์ ์ค๋ณต ์คํ์ด๋ผ๋ ๋ฌธ์ ๋๋ฌธ์ ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํด ํจ์จ์ฑ์ ๊ฐ์ ํ๋๋ฐ ์ด๊ฒ ๋ฌด์จ ์๋ฆฐ๊ฐ...ํ์ค ์ ์์ ๊ฒ ๊ฐ์๋ฐ์! ํ๋ค์ด ๋ฐฉ์์ ์ฝ๋๋ฅผ ํ ๋ฒ ์ดํด๋ด ์๋ค!
var cache = Array(repeating: 0, count: 100001)
func solution(_ n: Int) -> Int {
// ์ข
๋ฃ ์กฐ๊ฑด(1 or 2์ผ ๋ 1์ ๋ฐํ)
if n == 1 || n == 2 {
return 1
}
// ์ด๋ฏธ ๊ณ์ฐํ ์ ์๋ ๋ฌธ์ ๋ผ๋ฉด ๊ทธ๋๋ก ๋ฐํ
if cache[n] != 0 {
return cache[n]
} else { // ์์ง ๊ณ์ฐํ์ง ์์ ๋ฌธ์ ์ผ ๋ ์ ํ์์ ๋ฐ๋ผ ๊ณ์ฐ
cache[n] = (solution(n-1) + solution(n-2)) % 1234567
}
return cache[n]
}
์์์ ๋ณธ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ํ์ด์ ๋ค๋ฅธ ์ ์ ์ ํ ์ฌํญ์ ์ ์๋ ์ต๋๊ฐ๋ณด๋ค 1๋งํผ ํฐ ํฌ๊ธฐ์ cache๋ผ๋ ๋ฐฐ์ด์ 0์ผ๋ก ์ด๊ธฐํํด๋๊ณ ๊ณ์ฐํ ๊ฐ์ ์ฐจ๋ก๋ก cache์๋ค ์ ์ฅํด์ ๋์ค์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๊ณ์ฐํด์ผ ํ ๋, ์ด๋ฏธ ์ ์ฅํ ๊ฐ์ ๋ฐํํ์ฌ ํจ์์ ์ค๋ณต ํธ์ถ์ด ์๋๋ก ํ๋ค๋ ์ ์ ๋๋ค! (์ค์ ๋ก ์ด ์ฝ๋ ๋ํ ํ๋ก๊ทธ๋๋จธ์ค์ ์๊ฐ ์ ํ์ ๊ฑธ๋ฆฌ์ง ์๊ณ ํต๊ณผ๋ฉ๋๋ค)
์ด๋ ๊ฒ ํ๋ค์ด ๋ฐฉ์๊น์ง ๋์ ๊ณํ๋ฒ์ ๋ฐฉ์ ๋ ๊ฐ์ง ๋ชจ๋ ์ดํด๋ณด์๋๋ฐ์, ๋์ ๊ณํ๋ฒ์ ์ ํ์ ์ธ ํํ๋ ๋ณดํ ์ ๋ฐฉ์์ ๋๋ค. ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด ๊ตฌํํ ๊ฒฝ์ฐ ๊ฐ์ด ๋๋ฌด ์ปค์ ํจ์ ํธ์ถ์ ์์ฃผ ๋ง์ด ํด์ผํ ๊ฒฝ์ฐ ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์๋ ์๊ณ , ๋ฏธ๋ฆฌ cache ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ํด์ ์ด๊ธฐํํด๋์ด์ผ ํ๋ค๋ ๋จ์ ๋ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค๋ฉด ๋ณดํ ์ ๋ฐฉ์์ ๊ถ์ฅํ๋ค๊ณ ํฉ๋๋ค!
๋์ ๊ณํ๋ฒ์ ์ฌ์ค ๊ฐ๋ ์ ํฌ๊ฒ ์ด๋ ต์ง ์์ง๋ง ์ ์ฉํ๊ธฐ๊ฐ ์ฝ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค..(๋์ ๊ณํ๋ฒ์ผ๋ก ํ ์ ์๊ฒ ๊ตฌ๋๋ฅผ ๊นจ๋ซ๊ณ ์ ํ์์ ์ธ์ฐ๋ ๊ณผ์ ์ด ์ด๋ ค์ด ๊ฒ ๊ฐ์์..) ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํน์ ํ ๋ฌธ์ ๋ฅผ ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ๊ทผํ์ ๋ ์๊ฐ์ด ๋งค์ฐ ์ค๋๊ฑธ๋ฆฐ๋ค๋ฉด ๋์ ๊ณํ๋ฒ์ ์ ์ฉํ ์ ์๋์ง ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ถ๋ถ ๋ฌธ์ ๋ค์ ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค!
[์ฐธ๊ณ ์๋ฃ]
์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ ๊ตฌ์กฐ - ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ DP
์ค๋ณต๋๋ ์ฐ์ฐ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ธ์ ์ฌ์ฉํ๋?1\. ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ์๊ณ (์ต์ ๋ถ๋ถ ๊ตฌ์กฐ)2\. ์์ ๋ฌธ์ ์์ ๊ตฌํ ์ ๋ต์ ๊ทธ๊ฒ์ ํฌํจํ๋ ํฐ ๋ฌธ์ ์์๋ ๋์ผํ ๋(์ค๋ณต๋๋ ๋ถ๋ถ ๋ฌธ
velog.io
Swift) ๋์ ๊ณํ๋ฒ (Dynamic Programming) ์ดํดํ๊ธฐ
์๋ ํ์ธ์:) ์๋ค์ ๋๋ค ์ค๋๋ง์ ํฌ์คํ ์ ํ๋ ๊ฒ ๊ฐ๋ค์..! ์๋ง 1์ ๋ฌ์ ์๋ฃ๊ตฌ์กฐ + ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ํฌ์คํ ์ด ์ฃผ์ผ ๊ฒ ๊ฐ๊ณ .. 2์๋ฌ๋ถํด ๋ค์ iOS + Swift์ ๋ํ ํฌ์คํ ์ ํ ์์ ์ ๋๋ค :) ์ค
babbab2.tistory.com
<์ด๊ฒ์ด ์ฝ๋ฉ ํ ์คํธ๋ค with ํ์ด์ฌ>
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ๋ค with ํ์ด์ฌ | ๋๋๋น - ๊ต๋ณด๋ฌธ๊ณ
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉ ํ ์คํธ๋ค with ํ์ด์ฌ | IT ์ทจ์ค์์ด๋ผ๋ฉด ๋๊ตฌ๋ ์ ์ฌํ๊ณ ์ถ์ ์นด์นด์คใ์ผ์ฑ์ ์ใ๋ค์ด๋ฒใ๋ผ์ธ! ์ทจ์ ์ ์ฑ๊ณต ์ด์ ๋ ์๊ณ ๋ฆฌ์ฆ ์ธํฐ๋ทฐ์ ์๋ค!IT ์ทจ์ค์์ด๋ผ๋ฉด ๋๊ตฌ๋
product.kyobobook.co.kr