seq = []
# 우박 수열 구하기
def getSeq(k):
global seq
while(True):
seq.append(k)
# 1-1 짝수
if k % 2 == 0:
k /= 2
else: # 1-2 홀수
k = k*3+1
# 2. 결과 <= 1
if k <= 1:
seq.append(k)
break
def solution(k, ranges):
global seq
answer = []
# 우박 수열
getSeq(k)
for xx, yy in ranges:
result = 0.0
# 시작, 끝 x좌표 구하기
start = xx
end = len(seq) - 1 + yy
# 시작점 > 끝점 예외처리
if start > end:
result = -1
elif start == end:
result = 0
else:
# 정적분
for j in range(start, end):
result += max(seq[j+1], seq[j]) - (abs(seq[j+1] - seq[j]) / 2)
answer.append(result)
return answer
출처: 프로그래머스 연습문제, https://school.programmers.co.kr/learn/challenges