728x90

area 구현까지는 어렵지 않게 했으나 offset 구현 부분에서 무슨 말인지 이해가 안되서 블로그를 참고했다. 생각보다 어렵지 않는 내용이었다.

 

 

def find(n):
    if n%2 == 0:
        return int(n/2)
    else:
        return n*3+1
 
def solution(k, ranges):
    answer = []
 
    coor = [ ]
    count = 1
 
    coor.append([0,k])
 
    while True:
        if k==1:            
            break
 
        else:
            coor.append([count,find(k)])
            k = find(k)
            count+=1
 
    area = [ ]
    area.append(0)
    for i in range(0,len(coor)-1):
        area.append((coor[i+1][1]+coor[i][1])*0.5)
 
    for i in range(1,len(area)):
        area[i]+=area[i-1]
 
    s = 0
 
 
 
    for i in range(0,len(ranges)):
 
        start = ranges[i][0]
        finish = ranges[i][1]+len(area)-1
 
        if start > finish:
            answer.append(-1)
        else:
            answer.append(area[finish]-area[start])
 
 
 
 
    return answer
728x90

+ Recent posts