본문 바로가기
개발/백준 & 프로그래머스

[백준]9613번 GCD 합 c/c++

by 성장하고픈개발자 2022. 7. 1.
728x90
728x90

문제

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

나의 해결방법
유클리드 호제법 이용
https://velog.io/@minjukwak/%EB%B0%B1%EC%A4%80-1934-%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98-1v1ja0y4


코드

#include<iostream>
using namespace std;

int gcd(int a, int b)
{
    if (b == 0)
        return a;
    else return gcd(b, a % b);
}

int main()
{
    int t;
    cin >> t;

    int a[100];


    for (int i = 0; i < t; i++) {
        int n;
        cin >> n; //각 테스트케이스 마다 n개의 수 입력
        for (int j = 0; j < n; j++) {
            cin >> a[j]; 
        }
        long long sum = 0; //첫번째 for문 돌때마다 sum값 0으로 초기화
        for (int k = 0; k < n-1; k++) {
            for (int m = k+1; m < n; m++) {
                // n이 4인 경우 (1,2)(1,3)(1,4)(2,3)(2,4)(3,4) 순차적으로 최대공약수 구하기
                sum += gcd(a[k], a[m]); //모든 최대공약수의 합
            }
        }
        cout << sum << endl;
    }

    return 0;
}

피드백
반복문을 어떻게 작성할지 감이 안왔었다.
gcd를 구하는 코드보다 반복문 작성하는 코드가 더 빡셌다.

728x90
728x90