코딩/백준

[백준/파이썬/수학] 1676번 팩토리얼 0의 개수 코딩테스트 연습풀이 실버4

thisisjade 2022. 2. 20. 13:39
728x90

문제 출처: https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

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

www.acmicpc.net

 

문제

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

 

입력

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

 

출력

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

 

예제 입력 1

10

 

예제 출력 1

2

 

예제 입력 2

3

 

예제 출력 2

0

 

정답

N = int(input())
tmp = 1
answer= 0

if N < 5:
    print(answer)
else:
    for i in range(2, N+1):
        tmp*=i
    tmp = str(tmp)

    for i in tmp[::-1]:
        if int(i) == 0:
            answer +=1
        else:
            print(answer)
            break

 

N으로 숫자를 입력해준 후 5보다 작을경우 맨 뒤에 0이 나올 수 없기 때문에 if문으로 5보다 작을 경우를 0으로 출력되도록 세팅을 합니다.

else문에서는 계산을 한 후에 string타입으로 변경하여 [::-1]으로 for문을 통해 0의 갯수를 찾고 0이 아닐 경우 answer을 출력해주고 반복문을 중단합니다.

처음에는 tmp를 reverse하려고 했는데 문자열이라서 안 되더라고요...

배열만 reverse가 된다는 것을 오늘 알고갑니다.

728x90