본문 바로가기

알고리즘/BOJ

[Python&C++]1003-피보나치 함수

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

 

1003번: 피보나치 함수

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

www.acmicpc.net

처음에는 1과 0의 개수의 규칙을 찾으려 헀는데, N이 되게 작아서, 그냥 처음 시작할때 배열에 40이하의 모든 피보나치 수의 0, 1 개수를 구하고, 입력에 따라 적절히 출력하는 방식으로 구현했다.

Python

def fibonacci(n):
    global fibonacciList
    if n == 0:
        fibonacciList[n][0] += 1
    elif n == 1:
        fibonacciList[n][1] += 1
    else:
        fibonacciList[n][0] += fibonacciList[n-2][0] + fibonacciList[n-1][0]
        fibonacciList[n][1] += fibonacciList[n-2][1] + fibonacciList[n-1][1]

fibonacciList = []
for i in range(41):
    fibonacciList.append([0, 0])
    fibonacci(i)
for _ in range(int(input())):
    a = fibonacciList[int(input())]
    print(f'{a[0]} {a[1]}')

C++

#include <iostream>

void fibonacci(int n, int fibonacciList[][2])
{
    if(n == 0)
    {
        fibonacciList[n][0] = 1;
        fibonacciList[n][1] = 0;
    }
    else if(n == 1)
    {
        fibonacciList[n][0] = 0;
        fibonacciList[n][1] = 1;
    }
    else
    {
        fibonacciList[n][0] = fibonacciList[n-2][0] + fibonacciList[n-1][0];
        fibonacciList[n][1] = fibonacciList[n-2][1] + fibonacciList[n-1][1];
    }
}
int main()
{
    int fibonacciList[41][2], loopNum, b;
    for(int i = 0; i < 41; i++)
    {
        fibonacci(i, fibonacciList);
    }
    std::cin >> loopNum;
    for(int i = 0; i<loopNum; i++)
    {
        std::cin >> b;
        std::cout << fibonacciList[b][0] << ' ' << fibonacciList[b][1] << '\n';
    }
    return 0;
}

드디어 C++을 한번에 맞혔다!

'알고리즘 > BOJ' 카테고리의 다른 글

[Python]1194-달이 차오른다, 가자.  (0) 2020.08.10
[Python&C++]7868-해밍 수열  (0) 2020.07.11
[Python&C++]1037-약수  (0) 2020.05.19
[Python&C++]1026-보물  (0) 2020.05.18
[Python&C++]1032-명령 프롬포트  (0) 2020.05.18
[Python&C++]1004-어린 왕자  (0) 2020.05.18
[Python&C++]1002-터렛  (0) 2020.05.18
[Python&C++]2490-윷놀이  (0) 2020.05.18