알고리즘/문제 풀이

3052번: 나머지

Themion 2021. 12. 21. 22:19

https://www.acmicpc.net/problem/3052

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

나머지의 범위가 [0, 41]이므로 길이 42짜리 bool 배열에 각 나머지가 나왔는지 여부를 표시한 뒤, 배열에서 각 나머지가 나왔는지 여부를 센 값을 출력한다.

#include <cstdio>

#define MOD 42

int main() {
    bool mod[MOD] = { false, };
    int buf, ans = 0;

    // 수를 열 번 입력받은 뒤
    for (int i = 0; i < 10; i++) {
        scanf("%d", &buf);
        // 해당 수를 42로 나눈 나머지가 나옴을 표시한다
        mod[buf % MOD] = true;
    }

    // 서로 다른 나머지가 나온 횟수를 출력
    for (int i = 0; i < MOD; i++) ans += mod[i];
    printf("%d\n", ans);
    
    return 0;
}