[백준/Python]9613_GCD 합
2021. 6. 8. 13:01ㆍ백준 알고리즘
문제
https://www.acmicpc.net/problem/9613
풀이
유클리드 호제법을 이용합니다.
유클리드 호제법은 a, b(a>b) 두 수가 있을 때, a와 b의 최대공약수 G는 b와 a%b의 최대공약수 G'과 같다는 알고리즘입니다.
코드
import sys
from itertools import combinations
def GCD(A: int, B: int) -> int:
if B == 0:
return A
return GCD(B, A % B)
t = int(sys.stdin.readline().rstrip())
for _ in range(t):
lst = list(map(int, sys.stdin.readline().rstrip().split()))
n = lst[0]
numbers = lst[1:]
if n == 1:
continue
candidates = list(combinations(numbers, 2))
result = 0
for candidate in candidates:
a, b = candidate
if b > a:
a, b = b, a
temp = GCD(a, b)
result += temp
print(result)
'백준 알고리즘' 카테고리의 다른 글
[백준/Python]2512_예산 (0) | 2021.06.10 |
---|---|
[백준/Python]2206_벽 부수고 이동하기 (0) | 2021.06.08 |
[백준/Python]1890_점프 (0) | 2021.06.07 |
[백준/Python]2630_색종이 만들기 (0) | 2021.06.07 |
[백준/Python]1004_어린 왕자 (0) | 2021.06.05 |