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
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 2108 통계학 (0) | 2022.08.03 |
|---|---|
| [파이썬] 백준 18870 좌표 압축 (0) | 2022.08.02 |
| [파이썬] 백준 2981 검문 (0) | 2022.08.02 |
| [파이썬] 백준 15652 N과 M (4) (0) | 2022.08.01 |
| [파이썬] 백준 15651 N과 M (3) (0) | 2022.08.01 |