[C] LeetCode 172. Factorial Trailing ZeroesCoding/PS2026. 3. 12. 01:04
Table of Contents
반응형

문제(영어)

문제(번역)
정수 n이 주어질때, n!에서 오른쪽 끝에 있는 0의 개수를 구해라.
n! = n * (n-1) * ... * 2 * 1 인 것을 기억해라.
접근 방법
팩토리얼 결과의 맨 뒤에 0은 언제언제 붙을까?
0은 10이 곱해질때마다 생길 것이다. 그럼 10은 2와 5의 곱으로 생긴다.
우리는 여기에서 5에 집중을 해야 한다.
2는 생각보다 자주 나오지만, 5는 자주 나오지 않는다.
즉 뒤에 붙는 0의 수는 5가 나오는 수와 동일하다고 간주하면 된다!
그럼 답이 정말로 간단해진다.
소스코드
int trailingZeroes(int n) {
int c = 0;
while(n > 0) {
c += ( n/=5 );
}
return c;
}
공간복잡도도 O(1)이고, 해당 코드는 반복문이 최대 log_5 (n)번 돌아가기 때문에 O(log n) 의 시간복잡도를 갖게 된다.
반응형
'Coding > PS' 카테고리의 다른 글
| [C] LeetCode 136. Single Number (0) | 2026.03.15 |
|---|---|
| [C] LeetCode 283. Move Zeroes (0) | 2026.03.15 |
| [C] LeetCode 70. Climbing Stairs (0) | 2026.03.11 |
| [C] LeetCode 263. Ugly Number (0) | 2026.03.11 |
| 프로그래머스 고득점 Kit - 모음사전 (0) | 2025.03.01 |
@현주씌 :: 현주.로그
소프트웨어학과 현주씌의 일상을 담는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!