본문 바로가기
백준알고리즘/정수론 및 조합론

(Python/🥈4)백준 알고리즘 9613번: GCD 합

by windy7271 2023. 9. 4.
728x90
반응형

문제 바로가기 

 

문제:

양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.

입력:

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.

출력:

각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.

 

풀이:

import math
import sys
from itertools import combinations

sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')


T = int(input())

for _ in range(T):
    arr =list(map(int,sys.stdin.readline().split(" ")))
    n = arr[0] ; del arr[0]
    res = 0
    for i in list(combinations(arr,2)):
        x, y = i[0],i[1]
        res += math.gcd(x,y)
    print(res)

 

arr로 들어온 숫자중에서 2개를 뽑아 최대공약수를 구해서 res에 더해주는 식으로 한다.

 

그래서 2개를 뽑기 위해 combinations 를 사용해주었고 

 

math 내장함수 gcd를 사용하여 두 수의 최대공약수를 res에 더해주었다.

반응형

댓글