PI 문제 RTE(nonzero return code) 관련 질문입니다.(python)

  • User Avatar
    snowas

    일단 코드는 다음과 같습니다.

    ~~~ python3
    import os
    import sys
    N = []
    def classify(beg, end):
    global N
    M = N[beg:end]

    if M.count(M[0]) == len(M):
        return 1
    
    progressive = True
    for i in range(len(M)-1):
        if M[i+1] - M[i] != M[1] - M[0]:
            progressive = False
    
    if progressive and abs(M[1] - M[0] == 1):
        return 2
    
    alternating = True
    for i in range(len(M)):
        if M[i] != M[i%2]:
            alternating = False
    
    if alternating:
        return 4
    if progressive:
        return 5
    return 10
    

    INF = 987654321
    cache = [None]

    def memorize(beg):
    global N, INF, cache
    if beg == len(N):
    return 0

    if cache[beg] != None:
        return cache[beg]
    
    cache[beg] = INF
    for L in range(3, 5+1):
        if beg + L <= len(N):
            now = classify(beg, beg + L)
            rest = memorize(beg + L)
            cache[beg] = min(cache[beg], now + rest)
    return cache[beg]
    

    T = int(input().strip())
    for _ in range(T):
    N = [int(i) for i in input().strip()]
    cache = [None] * (len(N) + 2)
    answer = memorize(0)
    print(answer)

    </spoiler>
    기본적인 알고리즘은 jm북이고, 같은 알고리즘을 c++로 작성시에는 통과했습니다. 파이썬에서는 str 하고 int 타입이 구분되어있어 입력을 정수의 배열로 받고, 난이도 1을 확인할 때 count 함수를 쓴 것 정도를 제외하면 코드 구성은 거의 동일하다고 생각됩니다.
    정수형으로 숫자 받을 때 양 옆의 공백도 혹시 몰라서 제거 했고요.
    c++코드를 파이썬으로 옮기는 과정에서 무엇이 잘못되었을까요?
    

    9년 전
1개의 댓글이 있습니다.
  • User Avatar
    seico75

    abs(M[1] - M[0] == 1)

    abs(M[1] - M[0]) == 1
    아닌가요?


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.