프로그래밍/백준

[알고리즘] 백준 1676 파이썬 - 팩토리얼 0의 개수

매 석 2022. 11. 8. 21:41
반응형

 

 

1676번: 팩토리얼 0의 개수

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

www.acmicpc.net

문제

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

 

문제풀이

def factorial(n):
    ans=1
    for i in range(2,n+1):
        ans*=i
    return ans
x = str(factorial(int(input())))
cnt=0
for i in range(len(x)-1,-1,-1):
    if(x[i]!="0"):
        break
    else:
        cnt+=1
print(cnt)

- 문제의 요점은 N!의 값을 뒤에서부터 0이 아닌 다른 숫자가 나올 때 까지 0의 개수를 세는 것이다.

- 일단 N! 값을 x에 str 형태로 저장한다.

- for문을 이용해 x의 인덱스를 맨 뒤에서부터 0까지 1씩 줄여가며 접근한다.

  EX) x = 56230 -> i값의 변화 : 0 -> 3 -> 2 -> 6 -> 5 -> for문 종료

-  x[i] 값이 0이 아닌 값이면 바로 for문을 종료한다.

-  x[i] 값이 0이라면 개수를 1개 추가해준다.

- 최종적으로 나온 개수를 출력해준다.