[백준 9613] GCD 합

Minju Kwak·2022년 6월 25일
0

BOJ

목록 보기
22/22
post-thumbnail

문제

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

profile
그냥 나만의 노트

0개의 댓글