-
728x90
문제가 이해가지 않아서 찾아봤던 문제다.ㅠㅠ
N!은 곱의 계산이 기 때문에,
결국 0의 개수는 10을 몇 번 곱하는지를 세라는 것이였다.- N!안에 존재하는 2*5(10)의 수를 세야 한다.
- 1 ~ N까지 for문을 돌면서, 그 안에 2와 5가 몇개 있는지
각각 while문을 돌면서 숫자를 세어 준다.- two와 five중 작은 수를 선택한다.(최소 만들 수 있는 10의 수)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int two = 0; int five = 0; for (int i = 1; i <= N; i++) { int n = i; while (n % 2 == 0) { // 2 개수 세기 two++; n /= 2; } while (n % 5 == 0) { // 5 개수 세기 five++; n /= 5; } } // 2와 5로 만들 수 있는 10의 개수 System.out.println(five < two ? five : two); } }
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[1764] 백준 - 듣보잡(JAVA) (0) 2021.08.11 [1697] 백준 - 숨바꼭질(JAVA) (0) 2021.08.04 [1620] 백준 - 나는야 포켓몬 마스터 이다솜 (0) 2021.08.04 [1541] 백준 - 잃어버린 괄호(JAVA) (0) 2021.08.02 [1463] 백준 - 1로 만들기(JAVA) (0) 2021.08.02 댓글