※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 24416번 문제인 알고리즘 수업 - 피보나치 수 1이다.

문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/24416 

 

24416번: 알고리즘 수업 - 피보나치 수 1

오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍

www.acmicpc.net

첫 번째 의사코드는 결국 1들의 합으로 N번째 피보나치 수를 계산해내므로 "코드1"은 N번째 피보나치 수와 같은 횟수만큼 실행된다.

 

두 번째 의사코드는 N이 1 또는 2라면 실행되지 않을 것이고, 그렇지 않다면 반복문의 횟수만큼 실행될 것이므로 N-2회 실행될 것이다. 문제의 입력조건에서 N은 5 이상으로 주어졌으므로 N-2를 출력하게 구현해도 무방하다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long long ll;

ll fib[41];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	fib[1] = fib[2] = 1;
	for (int i = 3; i < 41; i++) fib[i] = fib[i - 1] + fib[i - 2];

	int N; cin >> N;
	cout << fib[N] << ' ' << N - 2;
}
728x90

+ Recent posts