티스토리 뷰
반응형
백준 1003번 피보나치 함수
https://www.acmicpc.net/problem/1003
정답 코드
#include <iostream>
using namespace std;
int arr[41];
int fibonacci(int n)
{
if (n == 0)
arr[0] = 0;
else if (n == 1)
arr[1] = 1;
else if (arr[n] == 0)
arr[n] = fibonacci(n - 1) + fibonacci(n - 2);
return arr[n];
}
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(false);
int num;
cin >> num;
fibonacci(40);
int N;
for (int x = 0; x < num; x++)
{
cin >> N;
if (N == 0)
cout << "1 0" << '\n';
else
cout << arr[N - 1] << " " << arr[N] << '\n';
}
return 0;
}
문제 풀이
전형적인 재귀 함수를 이용한 피보나치 함수 구현
문제입니다. 거기서 0과 1이 출력되는 횟수를 구하면
되는 문제인데 그냥 재귀로는 시간초과가 떠서 dp방식을 사용해서 피보나치 함수를 구현하였습니다.
n이 0일때, 1일때를 구분한 후 그 이상부터는 배열안에
값이 채워져 있지 않으면 배열 안에 피보나치 함수를 호출하여 값을 넣도록 하였습니다. 마지막으로 main함수 첫 부분에 ios_base::sync_with_stdio(false)와 cin.tie를 추가하였는데 이는 c++만의 독립적인 버퍼를 만들어줘서 실행시간이 줄어들게 됩니다. 그 후 cin과
cout의 묶음을 풀어줍니다. 이 두 문장은 c++문제를 풀 때 유용한 문장입니다.
반응형
'Algorithm > BOJ' 카테고리의 다른 글
백준 1010번 C++ (0) | 2023.07.20 |
---|---|
백준 1009번 C++ (0) | 2023.07.20 |
백준 1008번 C++ (0) | 2023.07.20 |
백준 1001번 C++ (0) | 2023.07.19 |
[C/C++] 백준 1000번 - A + B (0) | 2023.07.19 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- BFS
- 투 포인터
- 유클리드 호제법
- 에라토스테네스의 체
- 백준 풀이
- 알고리즘
- js
- 세그먼트 트리
- 카운팅 정렬
- 자바스크립트
- 자료구조
- Do it!
- CSS
- 알고리즘 공부
- 유니온 파인드
- C++
- 우선순위 큐
- HTML5
- 자바
- c++ string
- DP
- 스프링 부트 crud 게시판 구현
- C++ Stack
- 반복문
- html
- 이분 매칭
- DFS
- 백준
- 스택
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함