강의로 돌아가기
이경서

런타임에러 (코드주의!)

def solution(money):
    money_first = money[2: len(money) - 1] #처음을 나눈경우 1
    money_next = money[1:] # 처음을 나눈경우 2
    N1 = len(money_first)
    N2 = len(money_next)
    cache1 = [-1 for i in range(N1)]
    cache2 = [-1 for i in range(N2)]
    def cirSum_first(start): #처음을 제외한 선형으로 생각
        if start == N1 - 1:
            return money_first[start]
        if start >= N1:
            return 0
        if cache1[start] != -1:
            return cache1[start]
        cache1[start] = max(money_first[start] + cirSum_first(start + 2), cirSum_first(start + 1))
        return cache1[start]
    def cirSum_next(start): #같은 생각
        if start == N2 - 1: 
            return money_next[start]
        if start >= N2:
            return 0
        if cache2[start] != -1:
            return cache2[start]
        cache2[start] = max(money_next[start] + cirSum_next(start + 2), cirSum_next(start + 1))
        return cache2[start]
    answer = max(money[0] + cirSum_first(0), cirSum_next(0))
    return answer

정확성은 전부 맞는데 효율성 테스트에서 런타임 에러가 나옵니다. 뭐가 문제일까요?
캐쉬의 크기도 별로 크지 않은데 이유를 잘 모르겠습니다

  • 원찬희
    저도 정확성은 전부 맞는데 효율성에서 전부 런타임 에러 납니다. 자바로 코딩했습니다. 원찬희 2018.12.08 20:21
  • 심재훈
    dfs로 작동하는데 이 문제 크기가 커지면 dfs스택이 너무 커져서 stackoverflow뜨는듯 심재훈 2019.01.25 14:43
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.