๋ฌธ์
ํผ๋ณด๋์น ์๋ 0๊ณผ 1๋ก ์์ํ๋ค. 0๋ฒ์งธ ํผ๋ณด๋์น ์๋ 0์ด๊ณ , 1๋ฒ์งธ ํผ๋ณด๋์น ์๋ 1์ด๋ค. ๊ทธ ๋ค์ 2๋ฒ์งธ ๋ถํฐ๋ ๋ฐ๋ก ์ ๋ ํผ๋ณด๋์น ์์ ํฉ์ด ๋๋ค.
์ด๋ฅผ ์์ผ๋ก ์จ๋ณด๋ฉด Fn = Fn-1 + Fn-2 (n ≥ 2)๊ฐ ๋๋ค.
n=17์ผ๋ ๊น์ง ํผ๋ณด๋์น ์๋ฅผ ์จ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
n์ด ์ฃผ์ด์ก์ ๋, n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. n์ 20๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
ํ์ด
1. n๋ฒ์งธ ์๋ฆฌ์ ๊ฐ์ n-1๋ฒ์งธ, n-2๋ฒ์งธ ๊ฐ์ ํฉ์ด๋ค. -> n-1, n-2๋ฒ์งธ ๊ฐ์ ๊ธฐ์ตํ๊ณ ์์ด์ผํ๋ค. -> ๋ฐฐ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฑํํด์ ๊ฐ์ ์ ์ฅํด ๋๋๋ค.
2. n < 20์ ์กฐ๊ฑด -> 0๋ถํฐ n๊น์ง ๋ชจ๋ ๋ณด์๋ ์ถฉ๋ถํ ์์ ๊ฐ, ์๊ฐ๋ณต์ก๋ O(n) ์ด๋ฏ๋ก ํ๋์ฉ ๋ณด๋ ๋ฐฉ์์ ์ฑํํ๋ค.
3. n์ด 0๊ณผ 1์ ๊ฒฝ์ฐ๋ ์์ธ์ฒ๋ฆฌํ๋ค.
์ฝ๋
import java.util.*
fun main() = with(Scanner(System.`in`)) {
val n: Int = nextInt()
val N: ArrayList<Int> = ArrayList<Int>()
for(i in 0..n){
if(i == 0){
N.add(0)
} else if(i == 1){
N.add(1)
} else {
N.add(N.get(i-1) + N.get(i-2))
}
}
println(N.get(n))
}
'Programming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] ๋ฐฑ์ค 2609 - ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์(์ ํด๋ฆฌ๋ ํธ์ ๋ฒ) (0) | 2024.10.20 |
---|---|
[Kotlin] ๋ฐฑ์ค 2309 - ์ผ๊ณฑ ๋์์ด (1) | 2024.10.20 |
[Kotlin] ๋ฐฐ์ค 3460 - ์ด์ง์ (1) | 2024.10.19 |
[Kotlin] ๋ฐฑ์ค 2501 - ์ฝ์ ๊ตฌํ๊ธฐ (0) | 2024.10.19 |
[Python] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฌด์ธ๋ ์ฌํ ํ์ด์ฌ ํ์ด (0) | 2023.01.28 |