[프로그래머스] N개의 최소공배수
2023. 2. 20. 22:30ㆍAlgorithm
function solution(arr) {
var answer = 1;
let yaklist = [];
let yakjoin = [];
arr.forEach((num) => {
let newnum = num;
let yak = [];
var icopy = 0;
// 약수를 구하는 코드
while (icopy !== 1 && newnum !== 1) {
for (i = 2; i <= newnum; i++) {
if (Number.isInteger(newnum / i)) {
yak.push(i);
icopy = i;
newnum /= i;
break;
}
}
}
yakjoin = yakjoin.concat(yak);
yaklist.push(yak);
});
// 약수를 Set로 변환하여 중복값제거한 내역 뽑기
let sets = new Set(yakjoin);
// 각 내역을 가장 많이 갖고 있는 수 찾기
sets.forEach((nums) => {
let max = 1;
yaklist.forEach((list) => {
let listnum = list.filter((element) => nums === element).length;
max = max > listnum ? max : listnum;
});
answer *= nums ** max;
});
return answer;
}
세 개 이상의 정수의 최소공배수를 구하는 방법을 알았더라면 .. !!!!!!
훨씬 쉽게 풀 수 있다~!
원리는 간단하다! 앞에서부터 두 개씩 비교하여 최소공배수를 구해나가는 것!
재귀를 이용하면 쉽게 해결할 수 있다!
'Algorithm' 카테고리의 다른 글
| [프로그래머스] 직사각형 별찍기 (0) | 2023.02.22 |
|---|---|
| [프로그래머스] 점프와 순간 이동 (0) | 2023.02.20 |
| JavaScript의 match함수 (0) | 2023.02.13 |
| [프로그래머스] 게임 맵 최단거리 (0) | 2023.02.12 |
| [프로그래머스]두 정수 사이의 합 (1) | 2021.09.24 |