ijs5252   4년 전

어디가 틀린지 모르겠어요

잘못된 부분 알려주세요ㅠ

cdt416z   4년 전

음.. goto문을 쓰는건 질문자분의 성향이지만 저로서는 문법기능을 완벽히 무시하는 goto문 기능을 쓰는건 별로 안좋다고생각합니다..  13번 줄까지는 문제없고

int check[42] = { 0 }; 배열을 만들어서

check[arr[i]]++; 한뒤 0~ 41까지 for문으로 돌려가며 1 이상인 부분들을 하나씩 더한 값을 내놓는 알고리즘은 어떨까요??

ijs5252   4년 전

잘 이해가 안되는데 더 자세하게 설명해주실 수 있나요?ㅠㅠㅠ

cdt416z   4년 전

문제에서 원하는 것은 42로 나눈 나머지들 중 서로 다른 값이 몇개 있는가 입니다

입력으로 주어진 숫자들을 42로 나누면 0에서부터 41까지

총 42개의 숫자들이 나올수 있죠?

int check[42] = { 0 }; 에는 그 숫자들의 개수가 들어갈겁니다.

ex ) check[0] 에는 42로 나눈 나머지가 0인 숫자가 확인 될 시에 check[0]의 값을 1 더해주는거죠

따라서 check[0]에서부터 check[41]까지 값은 0 또는 자연수가 될 것이고,

저희가 원하는 것은 check[i]가 자연수라면 새로운 나머지값이 생긴 겁니다.

check[i] 값이 0이라면? 입력으로 주어진 수를 42로 나눈 수가 i인 경우가 없었다는 거죠

ijs5252   4년 전

그럼 마지막에는 check[42]안의 값들을 더해주면 되는건가요?

ijs5252   4년 전

check[arr[i]]++; 는 왜 해주는 거예요?

ijs5252   4년 전

아 이해하고 맞췄어요!! 감사합니당

p_ce1052   4년 전

코드 틀린점 말씀드리면 goto 문에 걸려서 start부분으로 이동하면 처음 for문의 조건 검사를 안합니다. 42로 나눈 나머지가 계속 같은 경우 배열 밖으로 나갈 수 있습니다. 또한 올려주신 코드에서 printf("%d",c)에서 c는 배열에서 마지막 원소가 들어있는 위치입니다. 총 개수를 구하려면 +1 해서 출력하셔야됩니다.

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