티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 3052번 나머지

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

 

3052번: 나머지

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

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

0 이상 1000 이하의 정수 10개를 입력받아 각 숫자를 42로 나눈 나머지를 구하고,

10개의 나머지 중 서로 다른 값이 몇 개 있는지 출력

 

2. 풀이

1) 초기화

42로 나눈 나머지는 0 부터 41 까지이므로,

크기가 42 인 1차원 배열을 만들고 모든 값을 0으로 초기화한다.

 

2) 입력 값 처리

입력받은 숫자를 42로 나누고, 나머지 값을 index 로 하는 배열 공간의 값을 증가시킨다.

이를 10회 반복한다.

 

3) 출력 값 만들기

크기 42인 1차원 배열을 순회하면서 0 이 아닌 값이 있으면 cnt 를 증가시키고, 이를 출력한다.

 

3. 코드

#include <stdio.h>

#define MAX_ARR 42

int main() {
	int arr[MAX_ARR] = { 0, };
	int input;

	for (int i = 0; i < 10; ++i) {
		scanf("%d", &input);
		++arr[input % 42];
	}
	
	int cnt = 0;
	for (int i = 0; i < MAX_ARR; ++i) {
		if (arr[i]) ++cnt;
	}

	printf("%d\n", cnt);
	return 0;
}
728x90
반응형
댓글