내일배움캠프 AI/페어프로그래밍
[페어프로그래밍] 230426 피보나치 수 | 다중할당 for
생각하는 코댕이
2023. 4. 27. 02:27
728x90
페어프로그래밍 결과 코드
# 페어프로그래밍으로 제작한 코드
def solution(n):
answer = []
for i in range(n+1):
if i == 0 or i == 1:
answer.append(i)
else:
f = answer[i-1] + answer[i-2]
answer.append(f % 1234567) # f(n)%m-> m=1234567 수가 너무 커지기 때문에! 소수인 1234567 로 나눈것!
return answer[-1]
+테스트용 코드
더보기
import os
os.system("cls")
def solution(n):
answer = []
for i in range(n+1):
if i == 0 or i == 1:
answer.append(i)
else:
f = answer[i-1] + answer[i-2]
answer.append(f % 1234567) # f(n)%m-> m=1234567 수가 너무 커지기 때문에! 소수인 1234567 로 나눈것!
return answer[-1] # [0,1,1,2] [0,1,1,2,3,5]
# ===============테스트공간==================
n=3 #2
m=5 #5
l=1500 #1058440
print("정답2 |",solution(n))
print("정답5 |",solution(m))
print("정답1058440 |",solution(l))
리팩토링 코드
# 리팩토링 코드 | 다중할당 , for, range , 나머지 연산자 사용
def solution(n):
a,b=0,1
for _ in range(n):
a, b = b, (a+b)%1234567
return a
시사점 or 새로이 알게된 점
다중할당을 통해 피보나치 수의 재귀성을 함수로 구현해 보았다.
문제에서 요구하는 바가 피보나치 함수 구현이 아니라, 1234567로 나누는 것이기에 런타임에러가 나지만, 재귀함수를 써보았다.
def solution(n):
if n<2:
return n
return solution(n-2)+solution(n-1)
print(solution(n)%1234567)
728x90