본문 바로가기
C++/백준 코딩테스트 풀이 C++

C++ 3052 나머지

by jjiing 2022. 6. 27.

이 문제의 핵심은 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