본문 바로가기

Java/코딩 테스트

수학: 백준 9613 자바(Java) GCD 합

반응형

문제: https://www.acmicpc.net/problem/9613

 

9613번: GCD 합

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

www.acmicpc.net

풀이: 

유클리드 호제법을 사용해 GCD(최대공약수)를 구하는 함수를 만들고, 전체적으로 3중 for문을 사용해

입력된 모든 숫자의 최대공약수를 구해서 더해주면 된다.

 

정답:

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

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());
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < t; i++) {
            long sum = 0;
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int n = Integer.parseInt(st.nextToken());

            int[] arr = new int[n];
            for (int j = 0; j < n; j++) {
                arr[j] = Integer.parseInt(st.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).append('\n');
        }

        System.out.println(sb.toString());
    }

    public static int gcd(int a, int b) {
        while (b != 0) {
            int r = a % b;

            a = b;
            b = r;
        }
        return a;

    }
}

 

지금까지 파이썬으로 알고리즘 문제를 풀다가 자바로 넘어오게 되었다.

그 이유는 코딩 테스트에 파이썬을 지원하지 않는 기업도 몇몇 있었고, 여러 취업 관련 정보를 얻다 보니

전공자의 경우 파이썬 보다는 자바나 C++ 언어를 능숙하게 사용하는 것이 비전공자와의 차이점을 둘 수 

있는 몇 안되는 방법이기 때문이다.

 

자바를 사용해 보니 확실히 파이썬이 코딩하기 쉬운 언어라는 생각이 들었다. 

하지만 전공자라면 자바 또는 C++을 할 줄 알아야 살아남을 수 있다는 현실...

반응형