[백준 문제] P9613 GCD합 문제
[백준 문제]P9613-GCD합
- 문제 : n개의 data의 2개의 쌍을 구하는 방법에 대한 문제
- 나의 해결 : 리스트로 만들어서 쌍의 위치가 같지 않은 것만 더한다음에 1/2를 해준다.
참고 해결 : 2중 for문으로 예를 들어 4개의 데이터면 위치가 0과 1 ~ 3, 1과 2 ~ 3, 2와 3으로 만들어서 모든 경우를 만들어준다
- 팁1 : 불필요한 i는 _ 로 써준다.
- 팁2 :
python n, *a = map(int, input().split())
이렇게 별을 쓰면 n 따로 a를 list형태로 만들어준다.
# 내 답안
def gcd(a, b):
if b == 0 :
return a;
else :
return gcd(b, a%b)
n = int(input())
for i in range(n) :
arr = list(map(int, input().split()))
sum = 0
for j in range(1, arr[0]+1) :
for k in range(1, arr[0]+1) :
if j != k :
sum = sum + gcd(arr[j], arr[k])
print(int(sum/2))
3
2 4 6
2
3 2 4 6
6
4 10 20 30 40
70
# 참고 답안
def gcd(x, y):
while y is not 0:
r = x%y
x = y
y = r
return x
for _ in range(int(input())):
n, *a = map(int, input().split())
s = 0
for i in range(0, n-1):
for j in range(i+1, n):
s += gcd(a[i], a[j])
print(s)