본문 바로가기

알고리즘/프로그래머스

[파이썬] 프로그래머스 코딩테스트 입문 - 다음에 올 숫자 완벽해설

문제

 

 

 

 

해설

 

이 문제의 경우 등비수열과 등차수열을 구분할 수 있는 본질적인 것을 알아내면 된다.

 

일단 여기서 common의 길이는 2보다 크고 1000보다 작다고 했으므로 최소 3개라는 걸 알 수 있다.

 

그리고 등차수열이라면 3개의 요소의 각각의 차이가 동일할 것이며, 동비수열이라면 3개의 요소의 각각의 차이가 다를 것이다.

 

따라서 이 3개의 요소를 사용하여 등비수열인지 등차수열인지 분류하고, 이에 따라 마지막 요소의 값에 일정부분을 더하거나 혹은 곱해주는 방식으로 쉽게 코드를 작성할 수 있다.

 

 

코드
def solution(common):
    interval = []
    answer = 0
    for i in range(1,3):
        interval.append(common[i] - common[i-1])
    if interval[0] == interval[1]:
        answer = common[-1]+interval[0]
    else:
        answer = common[-1]*(common[-1]/common[-2])
    return answer

 

 

결과