Contents
내가 작성한 코드
내가 작성한 코드
class Solution {
    public int solution(int[] arrayA, int[] arrayB) {
        // A배열 최대 공약수 구하기
        int gcdA = arrayA[0];
        for (int i = 1; i < arrayA.length; i++) {
            gcdA = gcd(gcdA, arrayA[i]);
        }
        // B배열 최대 공약수 구하기
        int gcdB = arrayB[0];
        for (int i = 1; i < arrayB.length; i++) {
            gcdB = gcd(gcdB, arrayB[i]);
        }
        // 한 쪽배열의 최대 공약수가 다른 배열의 원소들을 나눌 수 있는지 확인
        int resultA = canDivide(gcdA, arrayB) ? gcdA : 0;
        int resultB = canDivide(gcdB, arrayA) ? gcdB : 0;
        return Math.max(resultA, resultB);
    }
    // 최대공약수 구하는 메서드
    private int gcd(int a, int b) {
        while (b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }
    // 한쪽 배열의 최대공약수가 다른 배열의 원소들을 나누지 않는지 확인하는 메서드
    private boolean canDivide(int divisor, int[] arr) {
        for (int num : arr) {
            if (num % divisor == 0) {
                return false;
            }
        }
        return true;
    }
}Share article