JB의 이모저모

[BOJ 9613🥈4] GCD 합(Python) 본문

알고리즘/백준

[BOJ 9613🥈4] GCD 합(Python)

J B 2023. 9. 4. 14:31

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

 

9613번: GCD 합

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

www.acmicpc.net

문제

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

입력

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

출력

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

예제 입력 1

3
4 10 20 30 40
3 7 5 12
3 125 15 25

예제 출력 1

70
3
35

 

⭕ CODE

from itertools import combinations
from math import gcd

t = int(input())

for _ in range(t):
    a = list(map(int, input().split()))

    n = a[0]
    arr = a[1::]
    all = list(combinations(arr,2))
    result = 0
    for i in all:
        x = i[0]
        y = i[1]
        result += gcd(x,y)
    print(result)

✏️ Comment

math함수에 최대공약수(gcd) 최소공배수(lcm) 있다는 사실을 알아서 사용하였다. 함수를 만들어서 풀어보는거도 연습해야겠다