백준(B1) 2748번: 피보나치 수 2(파이썬, Python) *시간 초과 문제 해결 방법

2022. 12. 31. 12:47·Python/백준 문제풀이
반응형

https://www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

코딩에 조금이라도 관심이 있으신 분이라면 피보나치 수열은 반드시 들어봤을 것이다.

F(n) = F(n-1) + F(n-2) 라는 식을 가진 피보나치 수열은 보통 회귀 방법으로 풀고는 한다.

하지만 이 문제도 회귀 방법으로 풀게 된다면 답은 나오지만 시간 초과가 될 것이다.

 

지금부터 재귀함수를 사용하지 않고 리스트를 사용하면서 피보나치 수열을 푸는 방법을 알려주겠다!

1
2
3
4
5
6
7
8
9
def fibonacci(end):
    for i in range(end+1):
        if i == 0:
            num = 0
        elif i == 1 or i == 2:
            num = 1
        else:
            num = fibo[-1] + fibo[-2]
        fibo.append(num)
cs

 

내가 리스트로 구현한 피보나치수열 함수다.

재귀함수를 사용하지 않고 반복문을 사용해서 계산하는 방법으로 풀었다.

원래 재귀함수 방법으로 풀면

1
2
def fnc_s (n) : 
    return fnc_s(n-2) + fnc_s(n-1)
cs

이러한 방법으로 해서 피보나치 함수를 다시 불러오는 방법으로 풀지만 리스트로 하면 반복문을 사용하기 때문에 그럴 필요가 없다.

 

정답 코드:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fibo = []
def fibonacci(end):
    for i in range(end+1):
        if i == 0:
            num = 0
        elif i == 1 or i == 2:
            num = 1
        else:
            num = fibo[-1] + fibo[-2]
        fibo.append(num)
    
num1 = int(input())
fibonacci(num1)
print(fibo[-1])
 
Colored by Color Scripter
cs
반응형
'Python/백준 문제풀이' 카테고리의 다른 글
  • 백준(S1) 11286번: 절댓값 힙(파이썬 Python3)
  • 백준(G5) 5430번: AC (파이썬, Python3) 및 deque 설명
  • 백준(S2) 1927번: 최소 힙(파이썬, Python3)
  • 백준(S2) 11279번: 최대 힙(파이썬, Python3)및 heapq 설명
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (218)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (8)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
백준(B1) 2748번: 피보나치 수 2(파이썬, Python) *시간 초과 문제 해결 방법
상단으로

티스토리툴바