본문 바로가기
Developer/Algorithm

프로그래머스 코딩테스트 연습 Level 2 - N개의 최소공배수 (JavaScript)

by roqkfrlfhr 2022. 5. 29.

프로그래머스 코딩테스트 연습 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를 사용하면 간단하게 문제를 해결할 수 있습니다.

 

최대공약수와 최소공배수는 해당 방식만 잘 알고있으면 다시 사용하기 좋을 것 같습니다.

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청사항은 언제든지 말씀해주세요!

피드백도 언제나 환영입니다!

 

감사합니다.


댓글