이 문제는 피보나치 수를 구하면서 0과 1이 각각 몇번 출력되는지 구하는 문제다.
이건 재귀를 쓰고, 피보나치 수를 계산하면서 0과 1이 출력될 때마다 카운트하면 된다.
def fibonacci(n, count_0, count_1):
if n == 0:
count_0[0] += 1
return 0
elif n == 1:
count_1[0] += 1
return 1
else:
fibonacci(n - 1, count_0, count_1)
fibonacci(n - 2, count_0, count_1)
def main():
t = int(input()) # 테스트 케이스 수
for _ in range(t):
n = int(input())
count_0 = [0]
count_1 = [0]
fibonacci(n, count_0, count_1)
print(count_0[0], count_1[0])
if __name__ == "__main__":
main()
설명
1. fibonacci 함수: n == 0일 때 0 출력, n == 1일 때 1 출력하는 함수임.
출력될 때마다 카운트 배열에 값 하나씩 더함.
2. main 함수: 테스트 케이스를 처리하고, 각 테스트 케이스마다 fibonacci 함수를 호출해서 출력되는 0과 1의 개수를 출력함.
재귀로 풀면 시간이 너무 오래 걸려서 DP로 바꾸면 더 빠를 거예요! 0과 1의 호출 횟수만 구하면 되니까 메모이제이션으로 최적화해보는 것도 좋을 것 같아요👍👍