나른한 코딩 생활

피보나치 비스무리한 수열 본문

코딩테스트 문제풀이/Python

피보나치 비스무리한 수열

GerHerMo 2025. 4. 1. 17:02

14495번: 피보나치 비스무리한 수열

 

기존 피보나치 수열을 제작할 때의 수열을 변형하여 작성한다

num = int(input(''))

 

간단하게 입력받은 수 num

이제 수열을 함수화하자.

def like_fibo(n):
    seq = [1,1,1]
    for i in range(3,n):
        seq.append(seq[i-1]+seq[i-3])
    return seq[n-1]

 

이후 마지막 print 문을 작성하면 코드는 쉽게 완성된다.

print(like_fibo(num))

 

이렇게 완성된 코드는 다음과 같다

num = int(input(''))

def like_fibo(n):
    seq = [1,1,1]
    for i in range(3,n):
        seq.append(seq[i-1]+seq[i-3])
    return seq[n-1]

print(like_fibo(num))

 

위 코드를 정답을 제출하면 정답을 맞출 것이다. 

그러나 여기서 코드의 효율성을 위해서 함수에 다음과 같은 조건을 추가해준다.

    if n==1 or n==2 or n==3:
        return 1

 

다음 코드를 추가해줌으로서 처음 seq의 3자리 수를 반복문을 돌지 않아도 되게끔 한다.

코드의 효율성 측면에서 직관적이며, 불필요한 계산을 줄이는 조건을 추가한 것이다.

num = int(input(''))

def like_fibo(n):
    if n==1 or n==2 or n==3:
        return 1
    seq = [1,1,1]
    for i in range(3,n):
        seq.append(seq[i-1]+seq[i-3])
    return seq[n-1]

print(like_fibo(num))

 

코드 오류나 잘못된 부분의 지적은 댓글로 부탁드립니다