yyangman의 개발일지
C 알고리즘 개념 : N!에서 0의 개수 본문
자연수 N이 입력되면 N! 값에서 연속적으로 있는 0의 최대 개수를 구하는 프로그램을 작성해보자
만약 5!이면 5! = 120이므로 1이다. 만약 12! = 479001600 이므로 2가 된다

순서도는 아래와 같다

알고리즘 과정
1.N!을 일의 자리부터 a 배열에 넣어준다
2.배열을 다 넣으면 0항부터 배열의 값이 0인지 조건문을 만든다
3.배열의 값이 0이면 tmp 를 증가시킨다
4.연속된 횟수가 제일 큰 수인지 조건문을 만든다
소스코드는 아래와 같다
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main(){
int n,i,j,tmp=0,a[101],res=0,sum=0,c;
scanf("%d",&n);
for (i=1;i<=n;i++){
sum=sum*i;
}
printf("%d\n",sum);
for (i=0;sum!=0;i++){
res=sum % 10;
sum = sum/10;
a[i]=res;
}
int max=0;
for (j=0;j<=i;j++){
if (a[j] == 0){
tmp++;
} else {
if (tmp > max){
max=tmp;
}
tmp=0;
}
}
printf("\n");
printf("%d",max);
return 0;
}
'알고리즘' 카테고리의 다른 글
| 메모이제이션(피보나치, 시소 짝꿍) (2) | 2023.10.18 |
|---|---|
| 코딩테스트를 위한 자바 주요 문법 정리 (0) | 2023.10.06 |
| C 알고리즘 개념: Jolly Jumpers (0) | 2023.01.26 |
| C 알고리즘 개념: 석차 구하기 (0) | 2023.01.26 |