본문 바로가기

프로그래밍/알고리즘

[백준] 3052번 문제풀이

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로 나누지 않아 틀렸었음.