1️⃣서론
프로그래머스 level2 문제 N개의 최소공배수
입니다.
Javascript
를 이용하여 해결하였습니다.
2️⃣문제 설명
3️⃣풀이
이 문제는 N개의 최소공배수를 구하는 문제입니다. N개의 수(1,2, … , N) 가 있다고 가정하였을 때, 먼저 1번째 수와 2번째 수의 최소공배수를 구하고, 구한 최소공배수와 3번째 수의 최소공배수를 구합니다
. 이런식으로 N개까지 최소공배수를 구하면 그 수가 N개의 공통 최소공배수가 됩니다.
그렇다면 최소공배수는 어떻게 구해야하는가? 에 대한 답은 바로 유클리드 호제법 을 이용하는 것입니다.
유클리드 호제법은 최대공약수를 구하는 알고리즘 중의 하나입니다.
따라서 유클리드 호제법을 이용하여 최대공약수를 구하고 최소공배수는 두수의 곱 / 최대공약수
이므로 이를 이용하여 문제를 해결할 수 있습니다.
4️⃣ 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//최대공약수 구하기
const gcd = (a, b) => {
while (b > 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
};
//최소공배수 구하기
const lcm = (a, b) => {
return (a * b) / gcd(a, b);
};
const solution = (arr) => {
let answer = 1;
for (let i = 0; i < arr.length; i++) {
answer = lcm(answer, arr[i]);
}
return answer;
};
5️⃣ 결론
이 문제는 유클리드 호제법
만 알고 있다면 그리 어려운 문제는 아니었습니다. javascript만의 특별한 문법도 요구 되지않아서 어렵지 않게 해결할 수 있었습니다.
6️⃣ 마치며..
질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️