10810번 공넣기
정답

오답

어차피 배열은 모두 0으로 초기화를 시켰고 개수만 맞으면 되기 때문에 굳이 위의 식처럼 0번 자리부터 넣을필요가 없다 그냥 1번자리부터 배열을 넣고 출력도 1번부터하면 반복문의 가독성이 더 좋아진다
5597번 과제 안 내신 분

처음에 배열을 0으로 초기화 시킨다음에
scanf로 과제를 낸 학생의 배열에 1을 넣고 마지막으로 반목문과 조건문을 통해서
배열안에 있는데이터가 0일 때만 출력을 시키는 형식으로 만든다
3052번 나머지
오답

정답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>
int main() {
int a;
bool cnt[42] = { false, };
int res = 0;
for (int i = 0; i < 10; i++) {
scanf("%d", &a);
cnt[a % 42] = true;
}
for (int i = 0; i < 42; i++) {
if (cnt[i]) res++;
}
printf("%d", res);
return 0;
}
부울 배열을 통해서 먼저 cnt 배열을 거짓으로 초기화를 한 후 반복문을 사용해서 10개의 숫자를 받는다 그 후 cnt 배열에 받은 수의 나머지의 자리를 가지고 있는 배열을 참으로 바꾸어 놓는다 그 후에 반복문을 한번 더 사용해서 cnt 배열 안에 있는 데이터를 차례대로 읽는다 읽으면서 만약 참인 배열이 나오면 res 변수를 1증가 시킨다 여기서 반복되는 수가 나온다고 한들 어차피 참에서 참으로 바뀌는 것이기 때문에 오류는 없다 그 후 마지막에 res 변수를 출력해주기만 하면 다른 수의 개수를 구할 수 있다.