자료형을 주의해야 하는 것만 빼면 간단한 문제였다.
만약 한 테스트케이스가 100개의 수로 이루어져 있으면 그 순서쌍의 개수만 해도 아주 커진다.
그렇기 때문에 그 모든 순서쌍의 합인 sum의 자료형은 long으로 선언하는 것이 바람직하다.
1. 테스트케이스의 개수 T를 입력받는다.
2. T개의 테스트케이스를 한 줄씩 입력받는다.
3. 테스트케이스의 내용 중 첫 번째 값인 n이 한 테스트케이스를 구성하는 숫자의 개수다.
4. n개의 수를 입력받아 ArrayList에 저장한다.
5. gcd를 구하는 메서드를 작성한다.
5. 이중 반복문으로 모든 순서쌍을 gcd 메서드에 인사로 넘겨주고, gcd의 합을 구한다.
6. 각 테스트케이스의 gcd 합을 출력한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i=0;i<T;i++) {
long sum = 0;
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
ArrayList<Integer> list = new ArrayList<>();
for(int j=0;j<n;j++) {
list.add(Integer.parseInt(st.nextToken()));
}
for(int k=0;k<n-1;k++) {
for(int l=k+1;l<n;l++) {
sum += gcd(list.get(k),list.get(l));
}
}
System.out.println(sum);
}
}
static int gcd(int a, int b) {
while(b!=0) {
int r = a%b;
a = b;
b = r;
}
return a;
}
}
'Algorithm > [BOJ] - JAVA' 카테고리의 다른 글
[백준] 2745 : 진법 변환 JAVA 풀이 (0) | 2022.10.04 |
---|---|
[백준] 11005 : 진법 변환 2 JAVA 풀이 (1) | 2022.09.30 |
[백준] 1850 : 최대공약수 JAVA 풀이 (1) | 2022.09.30 |
[백준] 1934 : 최소공배수 JAVA 풀이 (0) | 2022.09.29 |
[백준] 2609 : 최대공약수와 최소공배수 (0) | 2022.09.29 |