강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

BH J님의 프로필 이미지
BH J

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-K

2-K BOJ 3474 추가아이디어 공유 (교수 현우) + python

작성

·

553

1

추가아이디어 - 그리디

  • min으로 5와 2횟수 비교할 필요없이 5가 최솟값을 보장

  • while문으로 계속해서 나누는방법

    • for 문으로 5 25 125로 나우는방법이아닌 5로 나눈값을 계속해서 나누는 형태(중간에 나눈값은 따로 더함)

C++

http://boj.kr/9f743d2fbc00459bba06f2559896e037

#include<bits/stdc++.h>
using namespace std;
int n, a;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a;
        int ret5 = 0;
        for(int j = 5; j <= a; j *= 5){
            ret5 += a / j;
        }
        cout << ret5 << "\n";
    }
    return 0;
}

python ( while 적용 )

http://boj.kr/c031aa4a62fd4690b2d17271266f87c6

import sys
input = sys.stdin.readline

for _ in range(int(input())):
    a = int(input())
    ret = 0
    while a >= 5:
        a //= 5
        ret += a
    print(ret)

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

LGTM

BH J님의 프로필 이미지
BH J

작성한 질문수

질문하기