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를 구하는 코드보다 반복문 작성하는 코드가 더 빡셌다.