코딩테스트
코딩테스트 연습 > 연습문제 > N개의 최소공배수
안양사람
2020. 8. 24. 17:36
728x90
SMALL
처음 풀이
function solution(arr) {
while(arr.length>2){
arr.push(lcm(arr[0],arr[1]));
arr.splice(0,2);
}
if(arr.length===2){
return lcm(arr[0],arr[1]);
}
}
function lcm(n1,n2){
let num=1;
while(!(num%n1===0 && num%n2===0)){
num++;
}
return num;
}
유클리드 호제법 적용
function solution(arr) {
while(arr.length>2){
arr.push(arr[0]*arr[1]/gcd(arr[0],arr[1]));
arr.splice(0,2);
}
if(arr.length===2){
return arr[0]*arr[1]/gcd(arr[0],arr[1]);
}
}
function gcd(n1, n2) {
return n1%n2 ? gcd(n2, n1%n2) : n2;
}
리듀스 함수 사용
function solution(arr) {
return arr.reduce((acc, cur) => acc * cur / gcd(acc, cur));
}
function gcd(n1, n2) {
return n1%n2 ? gcd(n2, n1%n2) : n2;
}
728x90
LIST