두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
n | m | return |
---|---|---|
3 | 12 | [3, 12] |
2 | 5 | [1, 10] |
function solution(n, m) {
// 최대 공약수(gcd) - 공통된 약수 중에 가장 큰 정수
// 최소 공배수(lcm) - 어떤 수를 두 수로 나누었을 때 나머지가 0인 수 중 가장 작은 수
const getGCD = (n, m) => {
let gcd = 1;
for (let i=2; i<=Math.min(n,m); i++){
if (n%i === 0 && m%i === 0) {
gcd = i
}
}
return gcd;
}
const getLCM = (n, m) => {
let lcm = 1;
while(true) {
if (lcm%n === 0 && lcm%m ===0) {
break;
}
lcm++
}
return lcm;
}
return [getGCD(n,m), getLCM(n,m)]
}
최대공약수와 최소공배수가 뭔지 순간 생각이 나지 않아서 애먹었다. ㅎㅎ;
뭔지 알고 나서는 금방 풀 수 있었다. 각각의 값을 구하는 함수를 만들어서 코드를 작성했다.