1차원 배열

10810번 공넣기

정답

image.png

오답

image.png

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

5597번 과제 안 내신 분

image.png

처음에 배열을 0으로 초기화 시킨다음에

scanf로 과제를 낸 학생의 배열에 1을 넣고 마지막으로 반목문과 조건문을 통해서

배열안에 있는데이터가 0일 때만 출력을 시키는 형식으로 만든다

3052번 나머지

오답

image.png

정답

#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 변수를 출력해주기만 하면 다른 수의 개수를 구할 수 있다.