내가 푼 코드
function solution(n, m) {
let least = 0;
let max = 0;
let arr = [];
if(m%n ===0){
least = n
max = m
arr.push(least,max)
}else{
least = 1;
max = n*m
arr.push(least,max)
}
return arr
}
그냥, 눈에 보이는 케이스만 만족한 코드다,,,
따라서, 최대공약수를 구하는 유클리드 호제법을 배워보자!!!
최소 공배수는 input으로 주어진 자연수 2개를 곱하고 최대 공약수로 나누는 방식
유클리드 호제법 :
나머지가 0이 될때 나눠준 수가 최대공약수가 된다!!!!!!!!
a > b , // 8>3
a%b = ...r // 8%3 = ...2
b%r = ...r2 // 3%2 = ...1
r%r2 = 0 // 2%1 = ...0
이것을 토대로 코드를 작성해봤는데, 실패했다.
function solution(n, m) {
// n%m = r
// m% r = r2
// r% r2 = r3
//나머지값이 r=0이 되는 순간 나눠준 값이 최대공약수다.
let result = []
let number = n
let divider= m
if(n<m){
number = m
divider = n
}
let remainder = 1 // 임의값 설정
for(remainder>0){
remainder = number % divider
number = divider
divider = remainder
if(remainder ===0){
result.push(divider)
result.push(n*m/divider)
}
}
return result
}
다른 분의 코드는??
function solution(n, m) {
var answer = [];
const greatest = (a, b) => {
if (b === 0) return a
return greatest(b, a % b)
}
const least = (a,b) => (a*b) / greatest(a,b)
return [greatest(n,m), least(n,m)]
}