[python 파이썬] 백준 9507번 Generations of Tribbles

2021. 2. 2. 00:17Algorithm/BOJ

반응형

www.acmicpc.net/problem/9507

 

9507번: Generations of Tribbles

꿍은 군대에서 진짜 할짓이 없다. 그래서 꿍만의 피보나치를 만들어보려고 한다. 기존의 피보나치는 너무 단순해서 꿍은 좀더 복잡한 피보나치를 만들어보고자 한다. 그래서 다음과 같은 피보

www.acmicpc.net

 

풀이1 - 메모이제이션 없는 재귀 - 시간초과

직관적으로 문제보고 짜봤는데 메모이제이션을 적용하지않아 시간초과 날 것 같았는데 돌려보니 시간초과가 났다 .

재귀 쓸거면 메모이제이션 적용해서 쓰자

t = int(input())

def koong(n):
    if n <2:
      return 1
    if n==2:
      return 2
    if n==3:
      return 4
    
    return koong(n-1) + koong(n-2) + koong(n-3) +koong(n-4)

for _ in range(t):
  n=int(input())
  print(koong(n))

 

풀이2 - 반복문을 이용한 풀이 - 맞음

t = int(input())

for _ in range(t):
  n=int(input())
  koong =[0]*(n+1)
  if n ==0:
    koong[0]=1
  elif n==1:
    koong[1]=1
  elif n==2:
    koong[2]=2
  elif n==3:
    koong[3]=4
  else:
    koong[0]=1
    koong[1]=1
    koong[2]=2
    koong[3]=4
    for i in range(4,n+1):
      koong[i]=koong[i-1] + koong[i-2] + koong[i-3] +koong[i-4]
      
  print(koong[n])

 

반응형