최대 1 분 소요

1676번: 팩토리얼 0의 개수

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

입력 조건

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력 조건

첫째 줄에 구한 0의 개수를 출력한다.


첫 번째 시도 .

 n = int(input())
 
 count2 = 0
 count5 = 0
 for i in range(1,n+1):
     a=2
     b=5
     while i // a:
         if i%a==0:
             count2 += 1
         a *= 2
     while i // b:
         if i%b==0:
             count5 +=1
         b *= 5
     
 print(min(count2,count5))

»intput

10

»output

 2

success

image-20220218225802889


🌝 Thinking

뒷자리에 0이 만들어지려면 곱하는 수의 인수에 2와 5가 몇개씩 들어 있는지를 찾아야한다.

그래서 반복구문을 이용하여 각각의 수에 인자가 몇개씩 들어 있는지를 구하여 그 중 작은 값을 출력하였다.

2가 8개 있어도 5가 2개뿐이라면 뒷자리에 0은 2개만 만들어 진다.




💡 깨달은 점.

  1. 수 안에 인수를 찾는 방법은 왠지 자주 사용되어질 수도 있을 듯하여 체화시켜야겠다.
  2. 다른 풀이에선 2의 인수가 5의 인수보다 월등히 많아서 5의 인수만 카운트하는 풀이도 있었다.

댓글남기기