반응형
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개 추가해준다.
- 최종적으로 나온 개수를 출력해준다.
'프로그래밍 > 백준' 카테고리의 다른 글
[알고리즘] 백준 9461 파이썬 - 파도반 수열 (2) | 2022.11.10 |
---|---|
[알고리즘] 백준 15650 파이썬 - N과 M(2) (2) | 2022.11.09 |
[알고리즘] 백준 4153 파이썬 -직각삼각형 (3) | 2022.11.07 |
[알고리즘] 백준 파이썬 14425 - 문자열 집합 (0) | 2022.11.06 |
[알고리즘] 백준 2231 파이썬 - 분해합 (2) | 2022.11.05 |