🫠 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) / 최대공약수
🫠 아 수학 너무 어렵다, 어려워... 왜 이렇게 어려운 거야... 최대공약수와 최소공배수 구하는 식은 외워야겠다..
'프로그래머스 풀이 > level1' 카테고리의 다른 글
[Programmers] level 1) 문제 '예산' 풀이 (0) | 2023.05.30 |
---|---|
[Programmers] level 1) 문제 '직사각형 별찍기' 풀이 (0) | 2023.05.29 |
[Programmers] level 1) 문제 '행렬의 덧셈' 풀이 (1) | 2023.05.27 |
[Programmers] level 1) 문제 '3진법 뒤집기' 풀이 *** (1) | 2023.05.25 |
[Programmers] level 1) 문제 '같은 숫자는 싫어' 풀이 (0) | 2023.05.23 |