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 |