1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <iostream> using namespace std; int main() { //나머지 배열 int rem[42] = {}; //입력 받는 값 int num; //서로 다른 수의 합 int cnt = 0;; for(int i=0; i<10; i++) { cin >> num; rem[num%42] = 1; } for(int i =0; i<sizeof(rem)/4; i++) { if(rem[i] ==1) { cnt++; } } cout << cnt <<endl; return 0; } | cs |
서로 다른 나머지가 몇개 출력 되는지에 대한 방법을 찾지 못해 검색을 통해 알게 되었다.
1. 나머지가 나올 수 있는 총 42가지(0~41)를 저장할 배열을 만들고 초기화.
2. 입력 받은 값의 나머지의 위치에 있는 값을 1로 바꿔줌.
3. 배열의 길이만큼 for문을 돌며 값이 1일 경우를 찾아 합을 구함.
실수 - 오랜만에 C/C++을 사용해서 sizeof(rem) 을 int값인 4로 나누지 않아 틀렸었음.