이 문제의 핵심은 10개의 숫자 배열에서 서로 다른 숫자의 개수를 세어주는 것이다.
나는 최대 숫자크기가 41인점을 이용해 41개의 크기를 가진 인덱스라는 배열을 만들어 해당 숫자 개수를 카운트 해줬다.
이 후 해당 인덱스가 1개 이상인 경우에 결과값을 ++해주는 방식으로 진행했다.
그런데 만약
최대 숫자크기가 41이 아니라 그 이상이라면 해당 방법을 사용하기 힘들어지므로
인덱스를 기용하는 방법 외에 다른 방법을 더 고민해봐야겠다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int num[10];
int index[42] = { 0 };
for (int i = 0; i < 10; i++)
{
cin >> num[i];
num[i] = num[i] % 42;
index[num[i]]++;
}
int count = 0;
for (int i = 0; i < 42; i++)
{
if (index[i] > 0)
count++;
}
cout << count;
}
'C++ > 백준 코딩테스트 풀이 C++' 카테고리의 다른 글
C++ 10773 제로 (0) | 2022.06.28 |
---|---|
C++ 1085 직사각형에서 탈출 / 제곱 / 제곱근 / 최소값 (0) | 2022.06.27 |
C++ 1157 단어공부 (0) | 2022.06.24 |
C++ 1546 평균 (0) | 2022.06.22 |
C++ 2908 상수 (0) | 2022.06.21 |