프로그래머스 코딩테스트 연습 Level 2 - N개의 최소공배수 (JavaScript)
Programmers(프로그래머스)의 코딩테스트 연습문제 Level 2 중,
[N개의 최소공배수] 문제를 JavaScript를 사용하여 해결해 보도록 하겠습니다.
문제
문제 설명
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.제한 사항
- arr은 길이 1이상, 15이하인 배열입니다.
- arr의 원소는 100 이하인 자연수입니다.
입출력 예
arr | result |
[2,6,8,14] | 168 |
[1,2,3] | 6 |
작성한 답
solution.js
function solution(arr) {
return arr.reduce((ac, v) => lcm(ac, v));
}
const gcd = (a, b) => a % b ? gcd(b, a % b) : b; // 최대공약수
const lcm = (a, b) => a * b / gcd(a, b); // 최소공배수
설명
최대 공약수와 최소 공배수를 구하는 과정은
[프로그래머스 코딩테스트 연습 Level1 - 최대공약수와 최소공배수] 문제에서
이미 한번 했던 과정이라 다시 잘 이용하면 쉽게 해결할 수 있는 문제입니다.
여러 수의 최소 공배수는 2개의 최소공배수를 구한 뒤 그 최소 공배수를 다른 수와의 최소 공배수를 구하는 과정을 반복하면 되기 때문에
reduce를 사용하면 간단하게 문제를 해결할 수 있습니다.
최대공약수와 최소공배수는 해당 방식만 잘 알고있으면 다시 사용하기 좋을 것 같습니다.
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청사항은 언제든지 말씀해주세요!
피드백도 언제나 환영입니다!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 Level 2 - 숫자의 표현 (JavaScript) (0) | 2022.05.31 |
---|---|
프로그래머스 코딩테스트 연습 Level 2 - 최솟값 만들기 (JavaScript) (0) | 2022.05.30 |
프로그래머스 코딩테스트 연습 Level 2 - JadenCase 문자열 만들기 (JavaScript) (0) | 2022.05.28 |
프로그래머스 코딩테스트 연습 Level 2 - 행렬의 곱셈 (JavaScript) (0) | 2022.05.27 |
프로그래머스 코딩테스트 연습 Level 2 - 최댓값과 최솟값 (JavaScript) (0) | 2022.05.26 |
댓글