728x90
반응형

출력되는 0과 1의 개수도 피보나치 수열을 따른다.

기본적인 다이나믹 프로그래밍 문제이다.

EX) 입력이 3일 때, 1의 결과 (0, 1)과 2의 결과 (1, 1)을 더한 (1, 2)가 답이다.

피보나치수열의 2차원 버전이 아닐까 라는 생각이 든다.

리스트를 그대로 출력하면 오답이니 인자들만 꺼내 주는 *를 사용하도록 하자

def s(a, b):
    t1 = a[0] + b[0]
    t2 = a[1] + b[1]
    return [t1, t2]

for _ in range(int(input())):
    a, b = [0, 1], [1, 0]
    n = int(input())
    if n == 0:
        print(*b)
    elif n == 1:
        print(*a)
    else:
        for i in range(n-1):
            a, b = s(a, b), a
        print(*a)
728x90
반응형

+ Recent posts