반응형
문제
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 |