알고리즘/백준

[백준 알고리즘] 1676번: 팩토리얼 0의 개수 (파이썬 / Python)

gyujh 2022. 8. 9. 06:03
문제

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

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

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

예제 입력
10
예제 출력
2

정답 코드
import sys
import math

n = int(sys.stdin.readline())

fac = (str(math.factorial(n)))

count = 0
for i in range(len(fac)):
    if fac[len(fac)-i-1] == '0':
        count += 1
        continue
    else: break
print(count)

n의 팩토리얼을 string으로 형변환하고, 뒤에서부터 탐색하도록 하여 '0'이라면 카운트하고 continue, '0'이 아니라면 break 후 카운트를 출력한다.

 

다른 풀이 (간단한 방법)
import sys
import math

fac = (str(math.factorial(int(sys.stdin.readline()))))
print(len(fac) - len(str(int(fac[::-1]))))

 

더 간단히 풀 수 있는 코드가 생각나서 추가한다. (실행시간은 같다.)

수를 받아 팩토리얼을 구하고, string으로 형변환한다.

이 문자열을 뒤집고 int형으로 형변환하고 다시 string으로 형변환한다. (ex: 2100 -> 12 가 된다)

뒷부분의 0이 있는 부분만 제거되었으므로, 두 문자열의 길이 차이를 출력한다.

 

 


 

1676번: 팩토리얼 0의 개수

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

www.acmicpc.net