simonetech   1년 전

python3으로 제출시 시간초과 오류가 뜨고 

pypy3로 제출시 정답으로 확인되는데 단순 컴파일 속도 차이로 인한 문제인가요??

코드에 문제가 있거나 조금 수정하면 더 괜찮겠다 하는 부분이 있으면 알려주세요 고수님들!  :)

hych0502   1년 전

재귀함수에서 시간을 엄청나게 소요하고 있네요.
해당 재귀함수는 k, n이 모두 14일 경우 40116600번이나 실행됩니다...

k, n이 작아서 시간차이가 많이 날 뿐 크게 문제는 없지만 Python3가 pypy보다 많이 느려서 Python3 로 제출하면 시간초과가 나는 것 같습니다. 문제가 k, n을 더 크게 잡았다면 무조건 시간초과입니다. 재귀를 쓰지 않는 풀이도 해 보시는 걸 추천드립니다

hych0502   1년 전

또는 다음과 같이 다이나믹 프로그래밍을 활용하는 방법도 있습니다.

dp = [[-1 for col in range(15)]for row in range(15)]
    def live(k, n):
        if dp[k][n] != -1:
            return dp[k][n]
        sum=0
        if(k == 0):
            return n
        else:
            for i in range(1, n+1):
                sum+=live(k-1, i)
        dp[k][n] = sum
        return sum

t = int(input())
for i in range(t):
    k=int(input())
    n = int(input())
    print(live(k,n))

simonetech   1년 전

고수님들 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.