lsmp12   3년 전

안녕하세요! 주석 달아 놓긴 했는데 글로 코드 한번 더 설명드릴게요

1. 1부터 10000까지의 수를 넣은 arr배열

2. 1부터 10000까지의 수가 각각 문제조건에 따라 만드는 수를 sum으로 둠.

3. 생성자가 존재하는 수의 번호에 해당하는 brr[sum] 배열에는 1을 넣음

4. brr[i]!=1 이면 arr[i] 를 출력.

printf("%d\n,arr[i]) 로 검토해보니까 28번째 줄 이후로 arr[i]의 초반 몇개의 값이 1로 바뀌던데 왜 이러는지 잘 모르겠습니다,,

selfnumber 함수 자체가 arr 배열은 건드리지 않는데 왜 selfnumber 함수 이후로 arr배열의 값이 바뀌는건가요?

답변 부탁드립니다.

모두 새해 복 많이 받으세요 :)

circlezer0   3년 전

selfnumber(i)의 최대값이 10000을 넘어가서 brr[10035]에서 문제가 생기는 것 같네요

배열 크기 늘여주니 정상작동합니다.

circlezer0   3년 전

printf("%d",arr);

printf("%d",brr);

해보시면 arr 주소가 brr주소의 40000 조금뒤에 있는데

10035*sizeof(int)가 40000을 넘어가서 arr값을 바꿔버린 것 같아요

lsmp12   3년 전

빠른 답변 감사합니다! 덕분에 지식 하나 배워갑니다.

새해 복 많이 받으시구 행복한 한 해 되시길 바라요! :)

댓글을 작성하려면 로그인해야 합니다.