기몽수
코딩 기록일지
기몽수
전체 방문자
오늘
어제
  • 분류 전체보기 (443)
    • 알고리즘 - SWEA (210)
      • D1 (19)
      • D2 (25)
      • D3 (143)
      • D4 (21)
      • D5 (2)
    • 알고리즘 - Programmers (74)
      • Unrated (34)
      • Lv 0 (4)
      • Lv 1 (3)
      • Lv 2 (32)
      • Lv 3 (1)
    • 알고리즘 - Baekjoon (158)
      • Bronze (1)
      • Silver (65)
      • Gold (90)
      • Platinum (2)
    • 취업 (0)
    • SSAFY (1)
hELLO · Designed By 김용수.
기몽수

코딩 기록일지

알고리즘 - Baekjoon/Silver

[백준] 9613번 : GCD합 Silver4(실버4) - JAVA[자바]

2023. 11. 26. 10:57

[Silver IV] GCD 합 - 9613

문제 링크

성능 요약

메모리: 11552 KB, 시간: 76 ms

분류

유클리드 호제법, 수학, 정수론

제출 일자

2023년 11월 26일 10:53:59

문제 설명

양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.

출력

각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.

 

 

1. 2중 for문으로 일어날 수 있는 상황을 다 처리해줌

2. 한 원소의 값은 최대 100만으로 100개의 원소 중 2개를 뽑는 경우의 수는 int의 범위를 넘어서니까 Long으로 처리해주어야 함

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        int t = Integer.parseInt(br.readLine());
        for(int tc = 0; tc < t; tc++){
            st = new StringTokenizer(br.readLine());
            int[] arr = new int[Integer.parseInt(st.nextToken())];
            for(int i = 0; i < arr.length; i++){
                arr[i] = Integer.parseInt(st.nextToken());
            }
            long result = 0;
            for(int i = 0; i < arr.length-1; i++){
                for(int j = i + 1; j < arr.length; j++){
                    result += GCD(arr[i], arr[j]);
                }
            }
            System.out.println(result);
        }

    }

    private static int GCD(int a, int b) {
        while(b != 0){
            int tmp = a % b;
            a = b;
            b = tmp;
        }
        return a;
    }
}

'알고리즘 - Baekjoon > Silver' 카테고리의 다른 글

[백준] 1780번 : 종이의 개수 Silver2(실버2) - JAVA[자바]  (1) 2023.11.27
[백준] 1074번 : Z Silver1(실버1) - JAVA[자바]  (0) 2023.11.26
[백준] 1850번 : 최대공약수 Silver1(실버1) - JAVA[자바]  (1) 2023.11.26
[백준] 1699번 : 제곱수의 합 Silver2(실버2) - JAVA[자바]  (1) 2023.11.25
[백준] 11004번 : K번째 수 Silver5(실버 5) - JAVA[자바]  (0) 2023.11.24
    '알고리즘 - Baekjoon/Silver' 카테고리의 다른 글
    • [백준] 1780번 : 종이의 개수 Silver2(실버2) - JAVA[자바]
    • [백준] 1074번 : Z Silver1(실버1) - JAVA[자바]
    • [백준] 1850번 : 최대공약수 Silver1(실버1) - JAVA[자바]
    • [백준] 1699번 : 제곱수의 합 Silver2(실버2) - JAVA[자바]
    기몽수
    기몽수

    티스토리툴바