Q. 등차수열 혹은 등비수열 common 이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성.
내 풀이:
def solution(c):
if all(c[i+2] - c[i+1] == c[i+1] - c[i] for i in range(len(c) - 2)):
answer = c[-1] + (c[-1] - c[-2])
elif all(c[i+2] / c[i+1] == c[i+1] / c[i] for i in range(len(c)-2)):
answer = c[-1] * (c[-1] / c[-2])
else:
answer = None
return answer
다른 좋은 풀이들:
def solution(common):
answer = 0
a,b,c = common[:3]
if (b-a) == (c-b):
return common[-1]+(b-a)
else:
return common[-1] * (b//a)
return answer
def solution(common):
if common[2]-common[1]==common[1]-common[0]:
return common[-1]+common[2]-common[1]
elif common[2]/common[1]==common[1]/common[0]:
return common[-1]*common[2]/common[1]
내 문제점 :
처음 접근시 특수한 경우가 있을 수 있어 3개의 조합은 봐야한다고 생각했던 것, 처음 3개 요소에 대해서 (a,b,c)라면 b-a=c-b, b/a = c/b 인 경우도 있지 않을까하고 생각했던 것( 결론적으론 존재하지 않아서 굳이 고려할 이유가 없음.)
추가적인 이유로 이에 따라 all()을 통해 모든 i에 대해 판단하지 않아도 됨.