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
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1922번 네트워크 연결 문제 풀기(Java) - 세무민의 코딩일기 (0) | 2021.09.22 |
---|---|
[백준] 1516번 게임 개발 문제 풀이(Java) - 세무민의 코딩일기 (0) | 2021.09.15 |
[백준] 2252번 줄 세우기 문제 풀이(Java) - 세무민의 코딩일기 (0) | 2021.09.14 |
세무민의 코딩일기 : 백준 알고리즘 나이순 정렬 문제 풀기 [10814번] (0) | 2021.02.03 |
세무민의 코딩일기 : 백준 알고리즘 1427 [소드인사이드] (0) | 2021.01.26 |