Digking's cave

프로그래머스 ) 멀리뛰기 (Python) 본문

코딩테스트/알고리즘

프로그래머스 ) 멀리뛰기 (Python)

디깅 2022. 10. 17. 20:27
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12914

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 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 result
4 5
3 3

입출력 예 설명

입출력 예 #1
위에서 설명한 내용과 같습니다.

입출력 예 #2
(2칸, 1칸)
(1칸, 2칸)
(1칸, 1칸, 1칸)
총 3가지 방법으로 멀리 뛸 수 있습니다.

풀이

def solution(n):
    answer = 0
    alist =[0]*(n+1)
    alist[0], alist[1] = 1,1
    for i in range(2,n+1):
        alist[i] = alist[i-1]+alist[i-2]
    answer = alist[n] % 1234567
    return answer

- 피보나치수열의 개념을 활용한다.

n    
1 1 1
2 [1,1],2 2
3 [1,1,1],[1,2],[2,1] 3
4 [1,1,1,1],[1,1,2],[1,2,1],[2,1,1],[2,2] 5
5 [1,1,1,1,1], [1,1,1,2], [1,1,2,1], [1,2,1,1], [2,1,1,1], [1,2,2], [2,1,2], [2,2,1] 8

 

반응형