본문 바로가기
알고리즘/BOJ(C++)

[BOJ 알고리즘] 3052 "나머지"

by frog 2021. 5. 18.

[BOJ 알고리즘] 3052 "나머지"


문제

  • 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
  • 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

● 소스코드

#include <stdio.h>
#include <algorithm>

using namespace std;

int main()
{
	int num[10] = {};
	int count[42] = {};
	
	for(int i=0; i<10; i++)
	{
		scanf("%d",&num[i]);
		count[num[i]%42]++;
	}
	
	int answer = 0;
	
	for(int i=0; i<42; i++)
	{
		if(count[i] > 0)
		{
			answer++;
		}
	}
	
	printf("%d\n",answer);
	
	return 0;
}

 

풀이

    - 특별한 알고리즘은 없다.

    - 정수 10개를 입력받고, 나머지를 계산하여 count[숫자%42] 값을 증가 시킨다.

    - count[i] 가 양수인 i의 수를 세면 된다.

 

* www.acmicpc.net/problem/3052 

 

3052번: 나머지

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

www.acmicpc.net

댓글