[백준] 11444번: 피보나치 수 6 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 이 문제는 행렬의 거듭제곱을 이용해 피보나치를 구하는 방법으로 해결할 수 있고 구하는 방법은 다음과 같다. 피보나치 수열을 수식으로 나타내면 fn+2=fn+1+fnf_{n+2} = f_{n+1} + f_{n} 이고, 식을 행렬의 곱으로 나타낼 수 있다. fn+2=fn+1+fn=1×fn+1+1×fn=[11]×[fn+1fn]f_{n+2} = f_{n+1} + f_{n} \\ = 1 \times f_{n+1} + 1 \times f_{n} \\ = \begin{bmatrix}1&1\end{bmatrix} \times \begin{bmatrix}f_{n+1} \\ f_{n}\end{bmatrix} 2 X 2 행렬을 만..
[백준] 10826번: 피보나치 수 4 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 문제에서 주어진 범위가 크기 때문에 BigInteger 자료형을 활용해야 한다. BigInteger 배열을 이용해 DP로 피보나치 계산을 해주면 된다. 코드 import java.math.BigInteger fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val num = br.readLine().toInt..