Algorithm/Python

백준 9613번 GCD 합

Shark_상어 2023. 1. 8. 16:26
728x90

1. 문제 설명

문제 링크

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

  • 입력
    • 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.
  • 출력
    • 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.
import sys
# 라이브러리 사용을 위한 import
from math import gcd

input = sys.stdin.readline

# 테스트케이스 수 입력
for _ in range(int(input())):
    # 숫자들 입력
    numbers = list(map(int, input().split()))
    # 모든 GCD을 위한 변수
    answer = 0
    
    # 첫번째 자리수가 배열의 길이 이므로 1부터 시작
    for i in range(1, len(numbers)):
        # 모든 숫자들에 대해 각각 GCD를 위해 i + 1
        for j in range(i + 1, len(numbers)):
            # GCD값 더하기
            answer += gcd(numbers[i], numbers[j])
    # 출력
    print(answer)

3. 회고

Q. 문제를 보고 든 생각

  • 파이썬의 최대공약수를 구해주는 라이브러리를 사용해야 겠다는 생각을 했다.

4. 고쳐야 할점

다시 문제를 푼다면 라이브러리 사용보단 함수를 사용해서 풀어볼 예정이다.

728x90