728x90
https://www.acmicpc.net/problem/1676
문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
해결코드
from math import factorial
n = int(input())
m = list(str(factorial(n)))
m.reverse()
cnt = 0
for i in m:
if(i=='0'):
cnt += 1
else:
break
print(cnt)
해결코드
처음에 문제를 이해를 못해서 쩔쩔매다가 겨우 이해했다...
예를 들어 5!이면 120이니까 뒤에서부터 0이 1개 있는 것이고
문제에서 n!을 했을 때 그 값의 뒤에서부터 0이 몇 개 있는지 세서 출력하면 되는 문제이다.
코드 풀이를 하면 일단
factorial 함수를 쓰기 때문에 math 라이브러리를 임포트 한다.
int(input())으로 n을 입력받고
m에는 n을 factorial 한 수를 문자열로 변환하여 한글자씩 list에 넣어준다.
그리고 m.reverse()를 통해 list를 거꾸로 뒤집어준다.(0이 앞으로감)
문제에서 0이 뒤에서부터 처음으로 끊길때까지의 0의 개수를 구하고 했으니 절대 sort같은 방법을 사용하면 안된다
--> sort하게되면 모든 0이 앞으로 가게 됨
일단 cnt를 선언하고 초기값을 0으로 정한다.
이제 m의 원소를 하나씩 검사하기 위해 for문을 돌린다.
만약 i가 '0'이라면 cnt값을 +1하고
'0'이 아니라면 멈추고 for문을 나온다.
cnt값을 출력해준다.
728x90
'Algorithm' 카테고리의 다른 글
[알고리즘] 백준 11723 (파이썬 풀이) (0) | 2022.02.02 |
---|---|
[알고리즘] 백준 1003 피보나치 함수 (파이썬 풀이) (0) | 2022.01.30 |
[알고리즘] 백준 1620 (파이썬 풀이) (0) | 2022.01.28 |
[알고리즘] 백준 1764 (파이썬 풀이) (0) | 2022.01.27 |
[알고리즘] 백준 2775 (파이썬 풀이) (0) | 2022.01.26 |
댓글