백준 11444 피보나치 수 6 JAVA 풀이 (행렬 거듭제곱, 분할정복, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/11444📌 문제 개요N번째 피보나치 수를 구하는 문제하지만 N의 크기가 매우 크기 때문에 일반적인 DP(O(N)) 방식으로는 시간 초과가 발생합니다. 📌 접근 방법이 문제는 피보나치를 행렬 형태로 변환하여 해결 기본 행렬:|1 1||1 0| 이 행렬을 N번 곱하면 다음과 같은 결과가 나옵니다.|F(n+1) F(n) ||F(n) F(n-1)| result[0][1] = F(N) 이 됩니다.📌 핵심 아이디어1. 행렬 거듭제곱A^N을 빠르게 구하기 위해 분할 정복 사용짝수: A^N = A^(N/2) × A^(N/2)홀수: A^N = A^(N/2) × A^(N/2) × A 2. 행렬 곱셈 “가로 × 세로” 방식으로 계..