728x90
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
풀이)
import java.util.Scanner;
public class Main_BJ_1676_팩토리얼0의개수 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans = 0;
while(n >= 5){
ans += n/5;
n /= 5;
}
System.out.println(ans);
}
}
당연히 안 되겠지만 처음엔 팩토리얼 수를 계산하고 10으로 나눠보는 방식을 사용했다.
이 방법은 당연히 시간 초과가 나왔다.
그 후, 끝자리가 0이 되려면, 소인수분해 했을 때 2와 5가 곱해지면 생긴다는 것을 생각해봤고,
5가 2보다 상대적으로 적게 나오므로, 5의 개수에 따라서 0의 개수가 달라짐을 깨달았다.
따라서 5의 개수를 세기 위해 n에서 5를 나눠주며 5의 개수를 세면 끝!
아이디어를 잘 생각해보쟝
728x90
'코테 > 백준' 카테고리의 다른 글
백준 2579 계단 오르기(JAVA) (0) | 2023.01.27 |
---|---|
백준 17219 비밀번호 찾기(JAVA) (0) | 2023.01.26 |
백준 9663 N-Queen(JAVA) (0) | 2023.01.24 |
백준 7662 이중 우선순위 큐(JAVA) (1) | 2023.01.23 |
백준 16928 뱀과 사다리 게임(JAVA) (1) | 2023.01.23 |