알고리즘 (JAVA)/프로그래머스 알고리즘

[코테준비 - python] 멀리뛰기 level2 - 개발자배찌

개발자 배찌 2022. 12. 17. 11:37
728x90

정말 현타가 왔던 문제.

하루종일 어떻게 풀까 생각했지만 나오지않았던 문제

결국 구선생의 도움을 받아 

피보나치수열로 풀면된다는 해답을 얻고 

코딩을 해보았다.

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

 

프로그래머스

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

programmers.co.kr

 

내 문제풀이

#n =1 경우의수 1    1
#n =2 경우의수 2    1,1    2
#n =3 경우의수 3    1,1,1  1,2  2,1
#n =4 경우의수 5    1,1,1,1   1,1,2    1,2,1   2,1,1  2,2
#n =5 경우의수 8    1,1,1,1,1    1,1,1,2   1,1,2,1   1,2,1,1   2,1,1,1   2,2,1,  2,1,2,                    1,2,2
#n의 경우의수는 n-1경우의수 + n-2경우의수 (피보나치수열)
#경우의수를 담을 list가 필요
#list에서 마지막 n번째에 해당하는 값 출력
#출력된 값 % 1234567 = 정답

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

 

 

다른사람 문제풀이

>> temp를 dict()로 선언해서 풀었음.

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