728x90

< 처음 풀이 >

팩토리얼로 계산을 했지만 당연히 시간 초과가 나왔고 방법을 찾지 못해 포기했다. 풀이를 보니 2와 5의 개수를 이용해서 풀라고 하였고 이처럼 풀었다.

 

< 해결 방법 >

하라는 대로 구현을 했는데 계속 시간 초과가 발생한다. 함수의 개수가 문제인 것 같지는 않은데 함수 내의 구현 부분에서 문제가 있는 듯 하다.

 

import sys
import math
 
def two(n):
    answer = 0
 
    while n%2==0:
        n=int(n//2)
        answer+=1
    return answer    
 
def five(n):
    answer = 0 
 
    while n%5==0:
        n=int(n//5)
        answer+=1
    return answer  
 
a,b = map(int, sys.stdin.readline().split(" ") )
 
maxs = max(b,a-b)
mins = min(b,a-b)
 
twos = 0
fives = 0
 
for i in range(maxs+1,a+1):
    if i%2 == 0:
        twos += two(i)
    if i%5 == 0:
        fives += five(i)
 
for i in range(1,mins+1):
    if i%2 == 0:
        twos -= two(i)
    if i%5 == 0:
        fives -= five(i)
 
print(min(twos,fives))
 

 

728x90

+ Recent posts