(1) i의 값을 변화시킨 탓에 생기는 반복문의 무한루프

honeyricecake·2022년 1월 19일
0

에러

목록 보기
1/2

백준 1676번 팩토리얼 0의 개수

#include <stdio.h>

int main()
{
	int i,N, count;
	scanf("%d", &N);
	count = 0;
	for (i = 1; i <= N; i++)
	{
		while (i % 5 == 0)
		{
			i /= 5; //i가 5일 때 i/=5를 하므로 i가 1이 되고 이게 반복문으로 들어가 i가 1 ~ 5를 계속 반복
			count++;
		}
	}
	printf("%d", count);
	return 0;
}

반복문에 사용하는 i의 값을 변화시켜 반복문에서 무한루프가 일어난다.
이런 경우 i의 값을 받아쓸 다른 변수가 필요하다.

올바른 코드

#include <stdio.h>

int main()
{
	int x, i, N, count;
	scanf("%d", &N);
	count = 0;
	for (i = 1; i <= N; i++)
	{
		x = i;
		while (x % 5 == 0)
		{
			x /= 5;
			count++;
		}
	}
	printf("%d", count);
	return 0;
}

0개의 댓글