백준 -1003 피보나치

김혁·2022년 1월 20일
1

백준알고리즘

목록 보기
6/13

백준 -1003 피보나치

나의 코드)

import sys

def fibonacci(n):
  global count_zero
  global count_one
  if n == 0:
    count_zero += 1
    
  elif n == 1:
    count_one += 1
  else:
     fibonacci(n-1) 
     fibonacci(n-2)

count_zero = 0
count_one = 0

test_case = int(sys.stdin.readline())

for i in range(test_case):
  element = int(sys.stdin.readline().strip())
  fibonacci(element)
  print(count_zero, count_one)
  count_zero, count_one = 0,0

comment) ㅋㅋㅋㅋㅋ 이 정도 생각은 다한다... 라고 느꼈다. 일단 문제를 다가갈 때 생각을 하고 다가가야 될 것 같다. 시간제한 0.25초 일단 재귀는 쓰지마라는 뜻인데 나는 멍청하게 들어갔다. 그리고 그냥 게속 제출하고 틀리는데 서든 킬뎃마냥 내 프로필이 보기 좋지 않다.... 하 머리박고 죽고싶지만... 그래도 일단 일반인 정도 하는구나 느꼈다. 물론 코딩하는 일반인 말고 그냥 진짜 민간인 ㅋㅋㅋㅋ
이번 문제로 느낀것은 저런 형식의 문제는 결과를 한번 도출해보고 재귀를 준데로 쓰는 것이아닌 수학적 규칙을 찾아내는 것이 가장 좋을 듯하다.

정답 코드)

t = int(input())

for i in range(t):
  cnt_0 = [1,0]
  cnt_1 = [0,1]
  n= int(input())

  if n > 1:
    for j in range(n-1):
      cnt_0.append(cnt_1[-1])
      cnt_1.append(cnt_1[-2]+cnt_1[-1])

  print(cnt_0[n],cnt_1[n])

profile
군도리

0개의 댓글