BackJoon Algorithm 9613 GCD 합 (Java)

업데이트:
최대 1 분 소요

BackJoon Algorithm - Java

alt

문제

alt

풀이

  • 수가 백자리 수까지 입력이 가능하므로 int sum 보다는 long sum을 써준다
  • 배열을 만들어 모든 경우의수에 최대공약수를 얻을수 있게한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Back_9613 {
    public static int GCD(int num1, int num2) {
        if (num2 == 0) {
            return num1;
        } else {
            return GCD(num2, num1 % num2);
        }
    }

    public static void main(String[] args) throws IOException {

        // given
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer token;
        StringBuilder sb = new StringBuilder();
        int test_count = Integer.parseInt(br.readLine());
        // when
        for (int i = 0; i < test_count; i++) {
            token = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(token.nextToken());
            long sum = 0;                   // GCD의 합
            int arr[] = new int[n];         // 입력 받을 수 배열 생성
            for (int j = 0; j < n; j++) {
                arr[j] = Integer.parseInt(token.nextToken());
            }
            for (int j = 0; j < n; j++) {
                for (int k = j + 1; k < n; k++) {
                    sum += GCD(arr[j], arr[k]);
                }
            }
            sb.append(sum+"\n");

        }
        // then
        br.close();
        System.out.println(sb);
    }
}



댓글남기기