문제
양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.
출력
각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.
제출
import java.util.*;
public class Q_9613 {
static int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a%b);
}
static public void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int i = 0 ; i < t ; i++) {
long sum = 0;
int n = sc.nextInt();
int[] arr = new int[n];
for(int j = 0; j < n ; j++) {
arr[j] = sc.nextInt();
}
for(int r = 0; r < n ; r++) {
for(int c = r; c < n; c++) {
if( r != c) {
sum += gcd(arr[r],arr[c]);
}
}
}
System.out.println(sum);
}
}
}
sum의 자료형을 주의하자 int로 하면 실패가 된다 범위를 잘 생각해야한다.
'코딩테스트 > JAVA 문제' 카테고리의 다른 글
[백준 - JAVA] 6588번 : 골드바흐의 추측 (0) | 2021.08.27 |
---|---|
[백준 - JAVA] 1978번 : 소수 찾기 (0) | 2021.08.25 |
[백준 - JAVA] 1934번 : 최소공배수 (0) | 2021.08.24 |
[백준 - JAVA] 2609번 : 최대공약수와 최소공배수 (0) | 2021.08.24 |
[백준 - JAVA] 10430번 : 나머지 (0) | 2021.08.24 |