문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
조건 및 입출력
1. 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
2. 첫째 줄에 구한 0의 개수를 출력한다.
코드 (Python 3)
# 선언부
def fact(n): #팩토리얼 계산 함수
result=1;
for i in range(1,n+1):
result*=i;
return result;
# 입력부
n=int(input());
# 처리부
zero_count=list(str(fact(n)))
result=0;
for i in range(len(zero_count)-1,0,-1):
if(zero_count[i]!='0'): #0이 아니면 루프 종료
break;
else: #0 이면 카운트+1
result+=1;
# 출력부
print(result);
풀이 과정
우선 팩토리얼 사용자 정의 함수를 만든다.
그 후 n!을 하기 위한 값을 입력받는다.
n! 계산이 끝나면 반환받은 값을 str형태로 받아 리스트에 넣는다. (문자 하나하나 분리되므로)
그 후 문자열 길이만큼 루프를 돌린다.
0이 나오면 result 에 +1을 해주고, 그렇지 않으면(0이 아닌 수가 나오면) 루프를 종료시킨다.
| 코드가 이상하거나, 이해되지 않는 부분은 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면 알려주세요 :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 11650번 : 좌표 정렬하기 (Python / 파이썬) (0) | 2023.01.28 |
|---|---|
| [백준] 8741번 : 이진수 합 (Python / 파이썬) (0) | 2023.01.28 |
| [백준] 2744번 : 대소문자 바꾸기 (Python / 파이썬) (0) | 2023.01.27 |
| [백준] 1181번 : 단어 정렬 (Python / 파이썬) (0) | 2023.01.27 |
| [백준] 10808번 : 알파벳 개수 (Python / 파이썬) (0) | 2023.01.27 |