백준 -1003 피보나치

백준 -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])

좋은 웹페이지 즐겨찾기