알고리즘/백준

[C++] 백준 3052번 - 나머지

Esunn 2022. 7. 26. 22:36

 

 

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

 

3052번: 나머지

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

www.acmicpc.net

 

10개의 수가 주어지고 이 수들을 42로 나눈 나머지 중에 다른 수가 몇 개 있는지 출력하는 문제이다.

 

 

#include <iostream>
using namespace std;

int main() {
	int num[10];
	int re[42] = { 0 , };
	int cnt = 0;
;
	for (int i = 0; i < 10; i++) { 
		cin >> num[i]; 
		num[i] = num[i] % 42;
	}
	for (int j = 0; j < 10; j++) re[num[j]]++;
	for (int k = 0; k < 42; k++) if (re[k] > 0) cnt++;
	cout << cnt;
}

 

이 문제는 조금 헤매었었는데 2577번 문제와 비슷하게 풀면 됐다.

결국 나머지라는 건 42를 넘을 수 없으니 42칸 배열을 만들어 준 후 나머지들의 수에 맞는 배열을 증가시켜줬다.

이 과정이 끝나면 배열의 담긴 값이 0보다 큰 게 몇 개 있는지 구해준 후 출력해줬다.

 


이 문제도 글을 참고해서 풀었다.

정렬을 통해 푸는 건가 싶어서 해봤는데 간단하게 배열로 접근하면 되는 문제였다.

https://st-lab.tistory.com/272

 

[백준] 3052번 : 나머지 - [C++]

https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제 알고리즘 [접근 방법] 직전 문제..

st-lab.tistory.com