개발자 톡
연습문제 톡
바이러스
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