인프런 커뮤니티 질문&답변
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)




