๋ฌธ์ ์ค๋ช
ํผ๋ณด๋์น ์๋ 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์ 1์ด์, 100000์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | return |
3 | 2 |
5 | 5 |
๋ด ๋ฌธ์ ํ์ด
func solution(_ n:Int) -> Int {
var fibo = [0, 1]
for i in 2...n {
fibo.append((fibo[i-2] + fibo[i-1]) % 1234567)
}
return fibo[n]
}
- ์ด์ฐจํผ n์ 2 ์ด์๋ง ์ ๋ ฅ๋๊ณ , 0, 1์ ๊ฒฝ์ฐ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ [0, 1] ๋ฐฐ์ด์ ์์ฑํด์ค๋ค.
- fibo ๋ฐฐ์ด์ 2๋ถํฐ ํด๋น ์์ ์ด์ ์, ๊ทธ ์ ์๋ฅผ๋ํ ๊ฐ์ 1234567๋ก ๋๋ ๋๋จธ์ง๋ฅผ append ํด์ค๋ค.
- ์ฒ์์๋ 1234567๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๊ฐํ์ง ์๊ณ , ๋๋์ง ์์ ๊ฐ๋ค์ ๋ชจ๋ ๋ฐฐ์ด์ ๋ด๊ณ ๋์ค์ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ์์ผ๋ก ๊ตฌํํ์๋๋ฐ, ๊ทธ๋ ๊ฒ ํ๋๊น ์๊ฐ ๋๋ฌด ์ปค์ ธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๐ก ํผ๋๋ฐฑ
- ๊ตฌํํ ๋ ๊ผญ ๋ด์ ์ ์๋ ๊ฐ์ ํฌ๊ธฐ๋ ์๊ฐํด์ฃผ์!
- ํผ๋ณด๋์น๋ ํ์์ ์ด๊ณ , ๊ฐ๋ ์ ์ ์์๋๋ฉด ๋ค๋ฅธ ๋ฌธ์ ์์๋ ํ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ ๊ธฐ์ตํด๋์.
๐ [ ์ถ๊ฐ ] 1์ฃผ์ผ ํ ๋ค์ ํ์ด๋ณด๊ธฐ
func solution2(_ n:Int) -> Int {
if n == 0 { return 0 }
else if n == 1 { return 1 }
return (solution2(n - 1) + solution2(n - 2)) % 1234567
}
- ์ผ๋ง ์ ๊ณต๋ถํ ์ฌ๊ทํจ์๋ก ํ๋ฉด ๊ฐ๋จํ ๊ฒ ๊ฐ์์ ์๋ํด๋ณธ ์ฝ๋์ด๋ค.
- ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ ๊ฐ๋จํ์ง๋ง, ์๊ฐ๋ณต์ก๋๊ฐ O(2^n)์ด ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ ์ด๊ณผ๋ก ํ๋ ธ๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] ๋ค์ ํฐ ์ซ์ Programmers(Lv.2) (0) | 2021.07.08 |
---|---|
[Swift Algorithm] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ Programmers(Lv.2) (0) | 2021.07.08 |
[Swift Algorithm] ํ๋ ฌ์ ๊ณฑ์ Programmers(Lv.2) (0) | 2021.07.08 |
[Swift Algorithm] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ Programmers(Lv.2) (0) | 2021.07.08 |
[Swift Algorithm] ์ต์๊ฐ ๋ง๋ค๊ธฐ Programmers(Lv.2) (0) | 2021.06.24 |
๋๊ธ