알고리즘 정복하기!/백준 문제풀이

백준 9613번 Python / Math

by seokii 2022. 2. 11.
728x90
반응형

문제 링크

https://www.acmicpc.net/problem/9613

 

9613번: GCD 합

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진

www.acmicpc.net

 

풀이

import math
t = int(input())
answer=0

for _ in range(t):
    data = input().split()
    del data[0]
    for i in range(len(data)-1):
        cnt = len(data)
        for j in range(cnt):
            if i < j:
                answer += math.gcd(int(data[i]), int(data[j]))
    print(answer)
    answer=0

주어진 수에서 나올 수 있는 모든 최대공약수를 합하는 문제입니다.

우선 입력 받은 값(t) 만큼 문제풀이를 진행합니다.

값들을 받을 때, 첫 번째 값은 필요가 없으므로 del로 data 리스트에서 제거합니다.

그리고 for문을 두 번 반복해서 리스트 인덱스를 순회하며 math.gcd(숫자1, 숫자2)를 진행해줍니다.

단, i < j의 조건을 걸어 같은 인덱스나 수행했던 계산을 반복하지 않도록 처리해줍니다.

예를 들어 첫 줄 예제의 경우 -> gcd(0번째, 1번째), gcd(0번째, 2번째), gcd(0번째, 3번째), gcd(1번째, 2번째), gcd(1번째, 3번째) ... 이런식으로 진행하도록 처리

 

 

728x90
반응형

'알고리즘 정복하기! > 백준 문제풀이' 카테고리의 다른 글

백준 1010번 Python / Math  (0) 2022.02.12
백준 11653번 Python / Math  (0) 2022.02.12
백준 1934번 Python / Math  (0) 2022.02.11
백준 1049번 Python / Greedy  (0) 2022.02.11
백준 1439번 Python / Greedy  (0) 2022.02.11

댓글