Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

잡동사니 블로그

[백준] 9613 - GCD 합 (python) 본문

Python/백준

[백준] 9613 - GCD 합 (python)

코딩부대찌개 2023. 2. 18. 12:25

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

풀이

from itertools import combinations
from collections import deque
import math
for i in range(int(input())):
    a=deque(list(map(int, input().split())))
    a.popleft()
    total=list(combinations(a, 2))
    ans=0
    for j in total:
        ans+=math.gcd(j[0],j[1])
    print(ans)

첫째 줄에 테스트 케이스의 개수는 필요없기에 popleft로 지우며, itertools 라이브러리를 이용하여 모든 조합이 튜플형식으로 반환됨

위와같이 모든 형식의 조합이 구해지므로 math 라이브러리에 gcd 메소드를 이용하여 각 최대공약수를 구한 뒤 최종 ans에 더한값을 출력하였음.

 

많이 쓰이는 라이브러리 재점검 하는 느낌입니다.