[프로그래머스][LV.2] 멀리 뛰기 | python3

2025. 2. 5. 17:27프로그래머스/LV.2

 

문제 링크: 멀리 뛰기

 

문제 설명

문제 설명

효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.

제한사항
- n은 1 이상, 2000 이하인 정수입니다.

 


문제 풀이

n=1 일 때 1
n=2 일 때 2
n=3 일 때 3
n=4 일 떼 5
n=5 일 때 8
n=6 일 때 13
'
'
'
이렇게 f(x)=f(x-1)+f(x-2)을 만족한다. 
저번에 풀었던 문제를 더듬으며 풀어봤다.
n+1 길이의 리스트를 만들어서 인덱스 번호 = n 이라고 생각.
for문을 이용하여 n번째 원소값에 인덱스 n-1의 원소값+인덱스 n-2의 원소값을 더해서 넣어준다.

 

내코드

def solution(n):
    if n==1:
        return 1
    elif n==2:
        return 2
    num=[0 for _ in range(n+1)]
    num[1],num[2]=1,2
    for i in range(3,n+1):
        num[i]=(num[i-1]+num[i-2])%1234567
    
    answer=num[n]
    return answer

 

 


더보기

다른사람풀이

def jumpCase(num):
    a, b = 1, 2
    for i in range(2,num):
        a, b = b, a+b
    return b

전에도 이런 류의 코드를 보고 센세이션하다고 느겼는데....다음엔 꼭 써먹어봐야지!!!!!

 

def solution(n):
    temp = dict()

    temp[1] = 1
    temp[2] = 2
        
    for i in range(3, n+1):
        temp[i] = temp[i-1] + temp[i-2]

    return temp[n] % 1234567

딕셔너리를 활용한 풀이방법