티스토리 뷰

https://www.acmicpc.net/problem/1676




이 문제는 팩토리얼을 구한 후 문자열을 역순으로 정렬하면 쉽게 구할 수 있습니다.


팩토리얼

$$N! = N\times (N-1)\times (N-2)\times \cdots \times 3\times 2\times 1$$



바로 파이썬 코드로 확인하겠습니다.



def factorial(N):
    result = 1
    for i in range(1, N + 1):
        result *= i
    return result

팩토리얼을 함수로 구현했습니다.

1부터 입력값까지의 정수들을 result 변수에 곱하여 반환합니다,


N = int(input())

N = str(factorial(N))[::-1]


팩토리얼 계산된 값을 문자열로 변환합니다.


파이썬에서는 [::-1]을 이용하여 역순으로 간단하게 정리할 수 있습니다.


[::-1]

[a:b:c]은 'a에서 b까지 c의 간격으로'라는 뜻입니다.
a가 none일 경우 처음부터라는 뜻이며 b가 none일 경우 마지막까지 c가 none이면 순서대로 하나씩이라는 뜻으로 이용할 수 있습니다.
[::-1]은 처음부터 마지막까지 역순 하나씩 이라는 뜻으로 이해하면 되겠습니다.



count = 0
for i in N:
    if i =='0':
        count += 1
    else:
        break
print(count)

count를 0으로 초기화하고 역순으로 정렬된 N문자열을 앞에서부터 하나씩 확인합니다.

0일 경우에는 count를 하나 증가시키고 0이 아닌 숫자가 나오면 반복문을 종료하고 0의 개수를 출력합니다.




def factorial(N):
    result = 1
    for i in range(1, N + 1):
        result *= i
    return result

N = int(input())

N = str(factorial(N))[::-1]
count = 0
for i in N:
    if i =='0':
        count += 1
    else:
        break
print(count)