준호씨의 블로그

hackerrank - Divisible Sum Pairs - Python3 본문

개발이야기/PS - Problem Solving, 알고리즘

hackerrank - Divisible Sum Pairs - Python3

준호씨 2020. 5. 28. 23:45
반응형

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

n개의 정수로 이루어진 배열 ar=[ar[0], ar[1], ..., ar[n-1]]과 양의 정수 k가 주어집니다. i, j 숫자 짝을 구하여 출력합니다. i <j이고 ar[i] + ar[j]는 k로 나누어 떨어져야 합니다.

예를 들어, ar=[1,2,3,4,5,6]과  k=5가 있습니다. [1,4], [2,3], [4,6] 세 개의 짝이 요건을 충족합니다.

Function Description

divisibleSumPairs 함수를 완성합니다. 요건에 만족하는 숫자 짝의 개수를 반환해야 합니다.

 

Sample Input

6 3
1 3 2 6 1 2

 

Sample Output

5

Explanation

 

풀이

k=3으로 나누어 떨어지는 합의 쌍은 5개입니다.

ar[0] + ar[2] = 1 + 2 = 3
ar[0] + ar[5] = 1 + 2 = 3
ar[1] + ar[3] = 3 + 6 = 9
ar[2] + ar[4] = 2 + 1 = 3
ar[4] + ar[5] = 1 + 2 = 3

 

코드 템플릿

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the divisibleSumPairs function below.
def divisibleSumPairs(n, k, ar):


if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    nk = input().split()

    n = int(nk[0])

    k = int(nk[1])

    ar = list(map(int, input().rstrip().split()))

    result = divisibleSumPairs(n, k, ar)

    fptr.write(str(result) + '\n')

    fptr.close()

divisibleSumPairs 함수를 완성합니다.

모든 쌍의 숫자의 합을 구한 다음 k로 나누어 떨어지는 게 몇 개인지 찾으면 됩니다.

def divisibleSumPairs(n, k, ar):
    answer = 0
    for i in range(len(ar)):
        for j in ar[i+1:]:
            if (ar[i] + j) % k == 0:
                answer += 1
    return answer

 

반응형
Comments