Level 2️⃣ - 숫자카드 나누기
2024. 4. 23. 16:52ㆍ알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/135807
문제는 어렵지 않으나 유클리지 호제법을 구현한 코드만 외우고 있어서 간단한 예시와 함께 정리해보려고 한다.
🛠코드
그리고 gcd 함수는 두 수 사이의 최대공약수만 구할 수 있는 줄 알았는데 여러 수들의 최대공약수도 구할 수 있음을 배웠다.
function solution(arrayA, arrayB) {
let ret = [];
let a = 0;
let b = 0;
arrayA.forEach((num)=>{
a = gcd(num, a);
});
arrayB.forEach((num)=>{
b = gcd(num, b);
});
if(arrayA.every((num)=> num%b !==0)) ret.push(b);
if(arrayB.every((num)=> num%a !==0)) ret.push(a);
if(ret.length > 1) return Math.max(...ret);
else if(!ret.length) return 0;
return ret[0];
}
function gcd(a,b){
if(a === 0) return b;
return gcd(b%a, a);
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 2️⃣ - 리코쳇 로봇 (0) | 2024.04.25 |
---|---|
Level 2️⃣ - 수식 최대화 (0) | 2024.04.24 |
Level 2️⃣ - 방금그곡 (1) | 2024.04.23 |
Level 2️⃣ - 전력망을 둘로 나누기 (0) | 2024.04.11 |
Level 2️⃣ - 메뉴 리뉴얼 (0) | 2024.04.11 |