728x90
시간 제한 1초, 메모리 제한 128MB
# 조건
- 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다.
- 각 테스트 케이스는 한 줄로 이루어져 있다.
- 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다.
- 입력으로 주어지는 수는 1,000,000을 넘지 않는다.
출력
- 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.
# 접근 방법 및 배운 점
- 문제를 잘 읽어야 된다... 각 테스트 케이스의 시작이 수의 개수라는 것을 놓쳐서 쉬운 문젠데 20분을 넘게 고민했다
- 파이썬의 경우 math 라이브러리의 gcd를 사용하면 최대 공약수를 쉽게 구할 수 있다.
- 주어진 수들을 1부터 N+1까지, i+1부터 N+1까지의 범위로 2중 반복문을 돌리며 temp에 값을 더해나가면 된다.
import sys
sys.stdin = open('input.txt')
input = sys.stdin.readline
from math import gcd
T = int(input())
for _ in range(T):
nums = [*map(int, input().split())]
N = nums[0]
temp = 0
for i in range(1, N+1):
for j in range(i+1, N+1):
temp += gcd(nums[i], nums[j])
print(temp)
728x90
'ALGORITHM > 수학, 기하학' 카테고리의 다른 글
[백준 2553번] 파이썬 - 마지막 팩토리얼 수 (0) | 2023.09.23 |
---|---|
[백준 14400번] 파이썬 - 편의점 2 (0) | 2023.09.10 |
[백준 17123번] 파이썬 - 배열 놀이 (0) | 2023.09.01 |
[백준 1934번] 파이썬 - 최소 공배수 (0) | 2023.08.22 |
[백준 6603번] 파이썬 - 로또 (0) | 2023.07.26 |