본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Divisible Sum Pairs

https://www.hackerrank.com/challenges/divisible-sum-pairs/problem

 

Divisible Sum Pairs | HackerRank

Count the number of pairs in an array having sums that are evenly divisible by a given number.

www.hackerrank.com

 

<문제>

배열의 크기인 n과 나누고 싶은 값 k를 입력받고 배열 ar을 입력받는다. 배열 중에 2개의 값을 더했을 때 k값으로 나눠떨어지는 pair의 개수를 화면에 출력한다.

 

<코드>

#include <stdio.h>
#pragma warning(disable:4996)

int divi_Pairs(int n, int k, int ar[]) {
	int pairs_num = 0;

	for (int i = 0; i < n - 1; i++)
	{
		for (int j = i + 1; j < n; j++)
		{
			if ((ar[i] + ar[j]) % k == 0)
				pairs_num++;
		}
	}

	return pairs_num;
}

int main(void) {
	int n, k;
	int* ar;    

	scanf("%d %d", &n, &k);
	ar = malloc(sizeof(int)*n);
	for (int i = 0; i < n; i++) {
		scanf("%d", &ar[i]);
	}
	printf("%d",divi_Pairs(n, k, ar));

	return 0;
}

 

<풀이>

1. 배열의 크기인 n과 나누고 싶은 값 k를 입력받고 n 크기만큼 배열 ar[]을 생성한다. 

2. for()문을 통해 배열ar[]을 입력받는다.

3. divi_Pairs() 함수는 ar[]배열의 i번째 값과 j번째 값을 for() 문을 통해 더하고, k로 나눠떨어지면 pair의 개수를 하나씩 증가시킨 뒤 pair 개수를 리턴한다.

4. divi_Pair() 함수의 리턴값을 화면에 출력한다.

 

<결과>