알고리즘

<백준> 1676번 자바 알고리즘

changha. 2021. 10. 23. 22:18

 

굉장히 간단해 보였지만

어떻게 풀어야 간단할지 잘 몰라서 다른 블로그들을 참고했다 

 

뒤에 0이 생기는 경우는 10이 곱해져야 한다 

=> 2 * 5 의 개수이다 

 

숫자가 커질수록 2의 제곱은 충분히 많으므로 

5의 갯수에 기준을 두고 문제를 풀면 되겠다

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;


class Main {

  public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int num = Integer.parseInt(br.readLine());

    int cnt = 0;

    while(num >= 5){
      cnt += num / 5;
      num /= 5;
    }

    System.out.println(cnt);

 

 

만약 어떤 원리인지 잘 모르겠다면 

https://st-lab.tistory.com/165

 

[백준] 1676번 : 팩토리얼 0의 개수 - JAVA [자바]

www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 정말 정말 쉬운 문제다. 알고리

st-lab.tistory.com

위 블로그가 잘 정리해놔서 참고해보면 될 것 같다