[자바JAVA]172. Factorial Trailing Zeroes
문제 172. Factorial Trailing Zeroes
주어진 int n을 팩토리얼로 나타내어 Trailing Zeroes를 구하는 문제이다.
Given an integer n, return the number of trailing zeroes in n!.
- 입출력예시
1 | //예시1 |
코드 및 풀이
팩토리얼 테이블이나 계산기로 확인하여 규칙을 찾을 수 있다.
n이 5의 배수인 경우 규칙을 찾을 수 있다.
| 팩토리얼 | Trailing Zeroes갯수 |
|---|---|
| 5! | 1 |
| 10! | 2 |
| 15! | 3 |
| 20! | 4 |
| 24! | 4 |
| 25! | 6 |
| 25! | 6 |
| 30! | 7 |
| 50! | 12 |
순차적으로 증가하는 가 싶었지만 25!에서 Trailing Zeroes 갯수는 5가 아니라 6이다.
이를 어떻게 규칙으로 만들 수 있을까?
나눗셈을 한번 더 적용하면 된다.
25/5 = 5 여기서 5를 한번 더 나누면 5/5 = 1이다.
총 5+1로 6을 찾아낼 수 있다.
50!으로해봐도 동일한 결과가 나온다.
즉 규칙은 n이 0보다 클때까지 계속 5로 나누어주는 것이다.
그리고 몫을 누적한 값을 리턴하면 된다.
1 | public class _0172FactorialTrailingZeroes { |
Trailing Zeroes란?
유튜브 강의에 따르면 소수점 오른쪽에 있으면서 그 뒤에 숫자가 오지않는 0을 의미한다.
반면 본 문제에서는 제약조건이 0 <= n <= 104 이므로 뒤에 숫자가 오지않는 0이라고 생각하면 된다.
![[OS/WINDOW]배포후 서버재시작에 batch와 윈도우 스케줄러 활용하기](https://cdn.pixabay.com/photo/2012/03/04/00/50/board-22098_960_720.jpg)
![[블로그]헥소테마에서 댓글기능 facebook에서 utterances로 변경하기](https://miro.medium.com/max/1600/1*aOv6h3h_v9PQWa03zGACnw.png)