Algorithm/Baekjoon

세무민의 코딩일기 : 백준 알고리즘 10870번 : 피보나치 수 5 풀기

세기루민 2021. 1. 26. 00:48
728x90

최근에 알고리즘을 다시 접하면서

기존에는 C++로 문제를 풀었지만

파이썬이 속도가 빠르고 괜찮다고 하길레

파이썬을 공부하면서 문제를 풀고 있다.


사실 이 문제는 말 그대로 피보나치 공식을 알면 풀 수 있는 문제인데

처음에 고민했던건 굳이 제귀함수를 안써도 가능하겠는데? 라는 생각이 들었다. 

이유는 결국에는 N번째 값만 출력하면 되니깐 반복문으로도 풀 수 있었다. 

우선 방식을 2가지로 풀어봤다.

첫번째 방법은 가장 기본적인 제귀함수를 이용하는 방식 

n = int(input())

def Fibonacci(x):
    if x == 0:
        return 0
    elif x == 1:
        return 1
    else:
        return Fibonacci(x-1) + Fibonacci(x-2)    
    

print(Fibonacci(n))

피보나치에서 기본 첫번째와 두번째는 0과 1의 값을 가지기 때문에 

위에 처럼 설정을 해주고 그와 다른 값이라면 제귀함수를 반환하면 된다.

두번째 방법은 반복문을 이용한 방법

n = int(input())

result = 0;
def Fibonacci(x):
    a, b = 0, 1
    if x == 0:
        return 0
    if x == 1:
        return 1
    
    for i in range(x):
        a, b = b, a+b
    return a    

print(Fibonacci(n))

첫번째와 두번째값은 동일하게 0과 1로 정해준 후 

반복문을 돌려서 해당 N번째 값을 반환해주면 된다. 

참고로 파이썬에서는 tmp를 구현안해도 가능한데 

위에 a, b = b, a+b 와 같이 구현해도 무방하다.

결과적으로는 정답!

사실 NYPC 문제랑 백준을 조금씩 풀고 있는 중인데 푸는 대로 올릴 예정! 

다음 포스팅도 좋은 정보로 찾아오겠습니다. 

 

 

728x90