문제
n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.
실행 결과
코드(c++)
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
int a = 0; // Fn-2
int b = 1; // Fn-1
long int c = 0; // Fn
if (n == 1) {
c = 1;
}
else {
for (int i = 1; i < n; i++) {
c = a + b;
a = b;
b = c;
}
}
cout << c;
return 0;
}
코드 설명
같은 난이도끼리 비교했을 때 비교적 쉬운 문제였다.
문제에 따르면 n=17일때 까지 피보나치 수를 써보면 다음과 같다.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
c = a + b 라고 놓고, 2부터 n까지 반복하고 swap 해주면 된다.
단, n = 0이나 1일 경우는 각각 0과 1로 설정하고 반복문 안에서 돌리지 않는다.
(문제에서 Fn = Fn-1 + Fn-2 (n ≥ 2)라고 주어졌으므로..)
문제 출처:
https://www.acmicpc.net/problem/2747
'PS' 카테고리의 다른 글
백준 1259번: 팰린드롬수 (0) | 2024.04.29 |
---|---|
코드트리: 최대공약수와 최소공배수 (0) | 2024.04.28 |
백준 2444번: 별 찍기 - 7 (0) | 2024.04.26 |
백준 2231번: 분해합 (0) | 2024.04.24 |
백준 1977번: 완전제곱수 (0) | 2024.04.23 |