Problem Solving/BOJ

[백준 / BOJ] C++ 1003 피보나치 함수

nageune 2023. 2. 6. 19:50
728x90
반응형

1003번: 피보나치 함수

 

문제

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

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

 

풀이

규칙을 찾는 것이 중요한 문제다.

N 0의 횟수 1의 횟수
0 1 0
1 0 1
2 1 1
3 1 2
4 2 3

여기서 0의 횟수와 1의 횟수를 각각 살펴보면

 

0의 횟수: 1, 0, 1, 1, 2, ...

1의 횟수: 0, 1, 1, 2, 3, ...

 

이므로 각각은 1, 0으로 시작하는 피보나치 수열과 0, 1로 시작하는 피보나치 수열이다.

따라서 각각에 대한 피보나치 수열을 구하는 문제다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  int t;
  cin >> t;
  int zero[41] = {1, 0};
  int one[41] = {0, 1};
  while (t--) {
  	int n;
    cin >> n;
    for (int i = 2; i <= n; i++) {
      zero[i] = zero[i - 1] + zero[i - 2];
      one[i] = one[i - 1] + one[i - 2];
    }
    cout << zero[n] << ' ' << one[n] << '\n';
  }
  return 0;
}

 

728x90
반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[백준 / BOJ] C++ 1009 분산처리  (0) 2023.02.06
[백준 / BOJ] C++ 1008 A/B  (0) 2023.02.06
[백준 / BOJ] C++ 1001 A-B  (0) 2023.02.06
[백준 / BOJ] C++ 1000 A+B  (0) 2023.02.06
[백준 / BOJ] C++ 2557 Hello World  (0) 2023.02.06