[코딩테스트][백준] 🔥 백준 3474번 "교수가 된 현우" 문제: Python과 Java로 완벽 해결하기! 🔥

김상욱·2024년 7월 14일
0
post-thumbnail

🔗 문제 링크

https://www.acmicpc.net/problem/3474

🕒 Python 풀이시간: 10분

t=int(input())

for tc in range(t):
    n=int(input())

    answer=0
    for i in range(1,n):
        k=5**i
        if k>n:
            break
        else:
            answer+=n//k
    print(answer)

🕒 Java 풀이시간: 5분

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int tc=sc.nextInt();
        for(int t=0;t<tc;t++){
            int answer=0;
            int n=sc.nextInt();

            for(int i=1;i<n;i++){
                long k=(long)Math.pow(5,i);
                if(k>n){
                    break;
                }else{
                    answer+=(long)(n/k);   
                }
            }
            System.out.println(answer);
        }
        
    }
}

🧩 팩토리얼의 끝 0의 개수 쉽게 이해하기!

팩토리얼의 끝에 있는 0의 개수를 구하려면 각 자리가 10의 배수로 나누어지는지 알아야 합니다. 10은 2와 5의 곱인데, n!의 경우 2의 개수가 항상 5의 개수보다 많으므로 5의 개수만 세면 됩니다.

🔄 n!의 0의 개수 구하기: 5의 배수 활용!

n보다 작은 5의 거듭제곱으로 나누어 떨어지는 수의 개수를 구하면 됩니다. 예를 들어, 5로 나누어진 몫, 25로 나누어진 몫 등을 구하여 합하면 됩니다.

✅ 효율적인 계산 방법: 반복문 사용!

반복문을 사용하여 5의 거듭제곱으로 나누어 떨어지는 수를 구하고, 이를 반복하여 더해주는 방식으로 효율적으로 해결할 수 있습니다.

이렇게 Python과 Java로 백준 3474번 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글