프로그래머스 풀이/level1

[Programmers] level 1) 문제 '최대공약수와 최소공배수' 풀이 ***

진기명기 2023. 5. 28. 07:14
🫠 Programmers (level 1) 👉🏻 문제 29번 (최대공약수와 최소공배수)

✏️ 문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요.
배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.
예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

✏️ 제한 사항
두 수는 1 이상 1000000 이하의 자연수입니다.

✏️ 입출력 예
n m return
3 12 [3, 12]
2 5 [1, 10]

 

 

 

 

 

 


function solution(n, m) {
  let gcd_res
    
  let gcd = (n, m) => m === 0 ? gcd_res = n : gcd_res = gcd(m, n % m)
  let lcm = (n * m) / gcd(n, m)
    
  return [gcd_res, lcm]
}
💁‍♀️ 최대공약수 구하기(gcd)
✅ 유클리드 호제법으로 최대공약수 구하기 
✅ n과 m이 나누어진다면 m이 최대공약수에 해당 (재귀함수 이용하여 계속 반복)

💁‍♀️ 최소공배수 구하기(lcm)
✅ (n * m) / 최대공약수 

 

 

🫠 아 수학 너무 어렵다, 어려워... 왜 이렇게 어려운 거야... 최대공약수와 최소공배수 구하는 식은 외워야겠다..