728x90
문제 출처: https://www.acmicpc.net/problem/1676
문제
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
'코딩 > 백준' 카테고리의 다른 글
[백준/파이썬/수학] 1476번 날짜 계산 코딩테스트 연습풀이 실버5 (0) | 2022.02.22 |
---|---|
[백준/파이썬/수학] 1759번 암호 만들기 코딩테스트 연습풀이 골드5 (0) | 2022.02.21 |
[백준/파이썬/수학] 6603번 로또 코딩테스트 연습풀이 실버2 (0) | 2022.02.19 |
[백준/파이썬/수학] 2167번 초콜릿 자르기 코딩테스트 연습풀이 브론즈3 (0) | 2022.02.19 |
[백준/파이썬/수학] 1037번 약수 코딩테스트 연습풀이 실버5 (0) | 2022.02.18 |