강의로 돌아가기
tkdrn426@gmail.com

[python] 테스트 2개 빼고 틀렸다는데, 반례가 궁금합니다.

.

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def solution(k, ranges):
    answer = []
    graph = [[0, k]]
    x = 1
    while k != 1 :
        if k % 2 == 0 :
            graph.append([x,k/2])
            k /= 2
        else :
            graph.append([x,(k*3)+1])
            k = (k*3) + 1

        x += 1

    s = []
    for i in range(1,len(graph)) :
        s.append((abs(graph[i-1][1] - graph[i][1]))*(0.5) + min(graph[i-1][1], graph[i][1]))

    for i in range(len(ranges)) :
        ranges[i][1] += len(s)

        if abs(ranges[i][0]) > abs(ranges[i][1]) :
            answer.append(-1)
            continue

        answer.append(sum(s[ranges[i][0] : ranges[i][1]]))

    return answer
2 개의 답변
장진

k = 5
ranges = [[0, -6]]
return [-1.0]

lybell

k = 5
ranges = [[8, 0]]
return [-1.0]
시작값이 우박수열의 길이(이 예에서 k=5일 때 우박수열의 길이는 5)를 넘어가버리면 유효한 구간이 아니게 됩니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.