[프로그래머스] 우박수열 정적분

박형진·2023년 1월 12일
0

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


1. 코드

def solution(k, ranges):
    answer = []
    x = 0
    pos = [(x, k)]  # (x, y)

    while k != 1:
        if k % 2 == 0:
            k = k // 2
        else:
            k = (k*3) + 1
        x += 1
        pos.append((x, k))

    value = []
    for i in range(1, len(pos)):
        value.append((pos[i][1] + pos[i-1][1]) / 2)

    for x1, x2 in ranges:
        x2 = x+x2

        if x1 == x2:
            answer.append(0.0)
        elif x1 > x2:
            answer.append(-1.0)
        else:
            answer.append(sum(value[x1:x2]))

    return answer

2. 후기

경계값 인덱스가 헷갈릴때는 고민하지말고 print()로 계속 값을 찍어보자

profile
안녕하세요!

0개의 댓글