[백준 문제] 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)

참고 : BOJ 9613 · GCD 합




© 2018. by statssy

Powered by statssy