유클리드 호제법를 이용해 풀이해보자
const gcd = (n, m) => {
let tmp;
while(m) {
tmp = n % m;
n = m;
m = tmp;
}
return n;
}
function solution(n, m) {
var answer = [];
answer.push(m ? gcd(n, m % n) : n);
answer.push(n*m / answer[0]);
return answer;
}
gcd, lcm은 유클리드 호제법을 통해 구하였고 나온 값을 answer에 푸쉬하여 리턴하였다
function gcdlcm(a, b) {
var r;
for(var ab= a*b; r = a % b; a = b, b = r){}
return [b, ab/b];
}
재귀함수로 풀이하는 것은 어느정도 생각하였는데, 위 처럼 for문을 이용해서 한 줄로 정리 할 수 있다는 것은 꿈에도 생각 못했다
실용적인 코드는 아니지만 멋있는 코드라고 생각한다