본문 바로가기

알고리즘/백준알고리즘

[백준 알고리즘/Python] 1676 팩터리얼 0의 개수

문제

 

 

문제 이해

처음에 '뒤에서부터 처음 0이 아닌 숫자가 나올때까지' 가 무슨뜻인지 몰랐습니다.

예시를 보니 10! = 3628800 입니다. 오른쪽에서 2칸 떨어져있다는 뜻이였습니다.

3! = 6 은 0이 없으니 0의 개수는 0개 입니다.

 

 

코드

input = int(input())

def factorial(n):
    ans = 1
    for i in range(1, n+1):
        ans *= i
    return ans

result = list(str(factorial(input)))

answer = 0

for i in range(1, len(result) + 1):
    if(result.pop() == "0"):
        answer += 1
    else:
        print(answer)
        break

팩토리얼 함수는 처음에 제귀로 했다가 백준 런타임 에러 (RecursionError) 가 떳습니다. 제귀가 너무 깊게 들어가는게 문제였습니다. 그래서 for문 형태로 바꾸었습니다.

 

int형으로 결과를 받아서 list로 만들려고 했는데 int형은 못만든다고 애러가 떳었습니다. 그래서 str형태로 바꾸고 다시 list형태로 바꾸었습니다.

 

list의 오른쪽부터 빼야하니 pop()을 써서 0이면 0의 개수를 1개씩 늘려줍니다. 0을 만나지 않는다면 바로 출력합니다.

728x90