😈 알고리즘/🍃 인프런 #1

🙏 28. N!에서 0의 개수

Buᐢ༝ᐢy 2023. 3. 18. 18:00

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 - 인프런 | 강의

모든 문제에 대한 저작권은 위 강의에 있습니다.

문제

자연수 N이 입력되면 N! 값에서 일의 자리부터 연속적으로 ‘0’이 몇 개 있는지 구하는 프로그램을 작성하세요. 만약 5! =  × ×  ×  × = 120으로 일의자리부터 연속적된 ‘0’의 개수는 1입니다. 만약 12! = 479001600으로 일의자리부터 연속적된 ‘0’의 개수는 2입니다.

입력 설명

첫 줄에 자연수 N(10<=N<=1,000)이 입력됩니다.

출력 설명

일의 자리부터 연속된 0의 개수를 출력합니다.

입력 예제 1

12

출력 예제 1

2

제출 코드

2023년 2월 14일

#include <iostream>
#include<algorithm>

using namespace std;

int main()
{
    int N = 0;
    cin >> N;
    
    int twoCnt = 0;
    int fiveCnt = 0;
    
    for(int i = 1; i <= N; i++)
    {
        int temp = i;
        while(i > 1)
        {
            if(temp % 2 == 0)
            {
                twoCnt++;
                temp /= 2;
                
            }
            else if(temp % 5 == 0)
            {
                fiveCnt++;
                temp /= 5;
            }
            else
                break;
        }
    }
    
    cout << min(twoCnt, fiveCnt);
    
    
    return 0;
}

풀이

0으로 끝나려면 10을 곱하면 된다. 그래서 2와 5가 곱해진 수를 체크한 후 10이 되는 수를 출력해주었다.