본문 바로가기
카테고리 없음

백준 1003번 <피보나치 함수>

by seungh2 2021. 7. 26.

백준 알고리즘 1003번

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

 

1003번: 피보나치 함수

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

www.acmicpc.net

1003번

피보나치 함수를 호출했을 때 0과 1이 각각 몇 번 출력되는지 구한다.

 

입력으로 첫 줄에 테스트케이스의 개수 T가 주어지고 각 테스트케이스는 한 줄로 이루어져있고 N이 주어진다.

 

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

 

문제 해결

주어진 테스트케이스에서 가장 큰 케이스 max까지 0과 1이 출력되는 횟수를 구한다.

0이 출력되는 횟수를 저장하는 배열 zero와 1을 출력되는 횟수를 저장하는 배열 one 두 개를 만들어서 max까지 구한다.

 

피보나치(n)의 값을 피보나치(n-2)의 값과 피보나치(n-1)의 값을 더한 값이기 때문에

zero와 one 또한 n-2와 n-1의 값을 더해서 구하면 된다.

 

def main():
    test = int(input())
    a = []
    max = 0
    for i in range(test):
        k = int(input())
        a.append(k)
        if max < k:
            max = k
    zero = [0 for _ in range(max+1)]
    one = [0 for _ in range(max+1)]
    zero[0] = 1
    one[1] = 1
    for i in range(2, max+1):
        zero[i] = zero[i-2]+zero[i-1]
        one[i] = one[i-2]+one[i-1]
    for i in a:
        print(zero[i],  one[i])
main()

728x90

댓글