C/백준알고리즘

[C] 백준알고리즘 #3052 나머지

Sehyeok20 2021. 1. 20. 10:07
반응형

백준알고리즘 #3052 나머지 문제

정수 10개를 입력받아 이를 42로 나눈 나머지 중 서로 다른 수가 몇개인가를 구하는 문제이다.

 

어떤 수를 42로 나누면 나머지가 0~41까지 나올 수 있으므로 이를 저장하는 배열 a[42]를 만들어 놓은 후

나머지가 n이라면 a[n]의 수를 1 증가시키는 방법으로 0부터 41까지의 나머지를 찾을 수 있겠다.

여기서는 서로 다른 수의 갯수를 찾는 것이므로

a[n]이 1이 아닌경우에만 1을 넣어주고 모든 수를 입력 받은 후에는 for문을 이용하여 a[ ] 배열에서 값이 1인 것들만 찾아서 카운트해주면 된다.

#include <stdio.h>

int main() {
	int n;
	int a[42] = { 0 };
	int count = 0;
	for (int i = 1; i <= 10; i++) {
		scanf_s("%d", &n);
		if (a[n%42] != 1) {
			a[n % 42]++;
		}

	}
	for (int i = 0; i < 42; i++) {
		if (a[i] == 1) {
			count++;
		}
	}
	printf("%d", count);
}

서로 다른 수의 갯수를 세는 count라는 변수를 만들어 a[0]부터 a[41]까지 반복하면서 a[i]가 1인 경우에 count를 증가시키면 쉽게 찾을 수 있다.

 

반응형