개발자 톡

연습문제 톡 바이러스

python 시간초과 발생 (해결완료 했지만 이해안가서 질문했습니다.)

등록일
2024-01-19 12:48:29
조회수
769
작성자
dlcndgus1541

실패 코드

K, P, N = map(int, input().split())

mod_value = 1000000007


virus = pow(P, N)

virus = (K * virus) % mod_value


print(virus)


성공 코드

def calculate_virus_count(K, P, N):

    MOD = 1000000007

    result = K


    for i in range(1, N+1):

        result = (result * P) % MOD


    return result


K, P, N = map(int, input().split())


result = calculate_virus_count(K, P, N)

print(result)



IDE를 통해서 확인해보면 실패 코드가 반복문을 사용하지 않아 좀 더 디버깅이 빠르게 됐습니다. 혹시나 하여 재귀함수를 통해 구현한 코드도 있는데 그 코드도 시간초과가 나왔습니다.

반복문이나 불필요한 연산을 줄였는데도 시간초과가 나와 그냥 나머지를 연산 도중에 계속 나눠주어 값을 작게 유지하면 되지 않을까 싶어 구현했더니 성공하였습니다.


pow 내장함수 코드를 확인하고 싶은데 확인하지 못하여 왜 성공코드가 좀 더 빠른지 알려주실 수 있을까요?

#바이러스
#파이썬
#python

이 카테고리의 톡 더보기