-
다음에 올 숫자코딩 테스트/Level 0 2022. 12. 16. 23:04반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120924
파이썬
def solution(c): if (temp := c[1] - c[0]) == c[2] - c[1]: # 등차 수열이라면 return c[-1] + temp return (c[1] / c[0]) * c[-1]
코드 자체는 어렵지 않은데
등차수열과 등비수열의 단어가 익숙하지 않아서 오답이 좀 있었던 것 같다.
아직 등차와 등비수열을 배우지 않은 학생들도 있을 것 같고..파이썬에서는 a[-1]로 a 리스트의 마지막 원소를 가져올 수 있다.
다른 언어에서는 보통 a[len(a) - 1] 로 접근하는데...
파이썬에서는 len(a)를 생략할 수 있다.
이런 느낌이 파이써닉.등차수열은 1,3,5,7,9,... 와 같은 수열이다.
'등'은 '같다'는 뜻, '차'는 '차이', '빼기'..
즉 어떤 항과 다음 항과의 차이가 모두 같은 수열이다.'1항과 0항의 차이'와 '2항과 1항의 차이'가 같으면 등차수열이다.
등비수열은 1,2,4,8,16,... 와 같은 수열이다.
'등'은 '같다'는 뜻, '비'는 '비율'..
즉 어떤 항과 다음 항과의 비율이 모두 같은 수열이다.'1항과 0항의 비율'은 '1항/0항'이다.
위에서 계산한 차이와, 비율을 마지막 항에 연산해 주면 마지막 다음 항을 알 수 있다.
solution = lambda c: c[-1] + temp if c[1] + (temp := c[1] - c[0]) == c[2] else c[-1] * c[1] / c[0]
코틀린
class Solution { fun solution(c: IntArray) = if (c[1] - c[0] == c[2] - c[1]) c[c.size - 1] + c[2] - c[1] else c[c.size - 1] * c[2] / c[1] }
반응형