반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 1676번 팩토리얼 0의 개수 파이썬(Python)

1) 문제번호 : 1676번

 

2) 문제 출처

https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

2. 문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

 

3. 제약사항


4. 입력

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

 

5. 출력

첫째 줄에 구한 0의 개수를 출력한다.

 

6. 풀이

- 맨 처음에는 이해하기 힘들었다. 값을 곱했을 때, 뒷자리가 0이 나오는 경우는 2를 곱했을 때, 5를 곱했을 때, 10을 곱했을 때다. 즉, 5를 곱하면 0의 개수를 구할 수 있다.

- 예를 들어, 5!은 1X2X3X4X5 = 120인데, 5가 1개가 있어 0이 1개 있다.

- 10!은 1X2X3X4X5X6X7X8X9X10이 있는데, 5가 2개가 있다. 그냥 5 1개와 10은 2X5이므로, 5가 2개다.

- 그래서, 10!은 2개가 된다.

- 따라서, 5로 나눠지는 몫을 더해주면 된다.

 

7. 소스 코드

import sys
input=sys.stdin.readline

#숫자 N
N = int(input())

# 0의 개수
count = 0

#N이 5 이상이면 while문 돌려 
while N >= 5 :
    #5로 나눈 몫은 0의 개수가 되고,
    count += N//5
    
    #5가 2번있는 것은 2개 증가를 위해
    N //= 5

print(count)

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기