최대공약수 - 유클리드 호제법
유클리드 호제법을 이용해서 주어진 각 배열의 최대공약수를 따로 구합니다.
구한 최대공약수가 1이 나온다면 0으로 바꿔줍니다.
A배열을 every 함수를 이용하여 각 원소가 B의 최대공약수로 전부 안나눠진다면 정답과 최대공약수B 중에서 큰 값으로 정답을 갱신합니다.
B배열도 마찬가지로 진행합니다.
정답을 반환합니다.
const gcd = (n1, n2) => {
let remainder = n1 % n2;
return n2 === 0 ? n1 : gcd(n2, remainder);
};
function solution(arrayA, arrayB) {
var answer = 0;
let [gcdA, gcdB] = [arrayA[0], arrayB[0]];
for (let i = 1; i < arrayA.length; i++) {
gcdA = gcd(gcdA, arrayA[i]);
gcdB = gcd(gcdB, arrayB[i]);
}
if (gcdA === 1) gcdA = 0;
if (gcdB === 1) gcdB = 0;
if (arrayA.every((v) => v % gcdB !== 0)) answer = Math.max(answer, gcdB);
if (arrayB.every((v) => v % gcdA !== 0)) answer = Math.max(answer, gcdA);
return answer;
}