본문 바로가기
Algorithm/Python

백준 9613번 GCD 합

by Shark_상어 2023. 1. 8.
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

'Algorithm > Python' 카테고리의 다른 글

백준 1913번 달팽이  (0) 2023.01.12
백준 17135번 캐슬 디펜스  (1) 2023.01.09
백준 17103번 골드바흐 파티션  (0) 2023.01.08
백준 1676번 팩토리얼 0의 개수  (0) 2023.01.08
백준 14503번 로봇 청소기  (0) 2023.01.07