-
[프로그래머스 Level 2] N개의 최소공배수 (JavaScript)Coding Test/JavaScript 2024. 11. 4. 17:22
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12953
입출력 예
arr result [2, 6, 8, 14] 168 [1, 2, 3] 6 풀이
function solution(arr) { function gcd(a, b) { if (b === 0) return a; return gcd(b, a%b); } function lcm(a, b) { return (a * b) / gcd(a, b); } return arr.reduce((acc, num) => lcm(acc, num)); }
solution 함수는 배열 arr에 포함된 숫자들의 최소공배수(LCM)를 계산하는 기능을 수행한다.
먼저, 최대공약수(GCD) 계산 함수를 정의한다.
이 함수는 두 숫자 a, b를 입력 받아 최대공약수(GCD)를 재귀적으로 계산한다.
이는 유클리드 호제법을 사용하여 GCD를 구한다.
기본 원리는 gcd(a, b) = gcd(b, a%b)이다. b가 0이 될 때까지 반복하며, b가 0이 되면 a가 gcd가 된다.
다음으로, 최소공배수(LCM) 계산 함수를 정의한다.
이 함수는 두 숫자 a, b를 입력 받아 최소공배수(LCM)을 계산한다.
LCM은 GCD를 이용하여 계산된다.
기본 원리는 (a * b) / gcd(a, b)로, 두 숫자의 곱을 그들의 최대 공약수로 나누면 최소공배수가 된다.
마지막으로, 배열의 최소공배수를 계산한다.
reduce 메서드를 사용하여 배열 arr의 모든 숫자의 LCM을 계산한다.
reduce 메서드는 배열의 각 요소를 순회하면서, 이전 값 acc와 현재 값 num의 LCM을 계산한다.
로직은, 첫 번째 호출에서 acc는 배열의 첫 번째 요소로 초기화되고, 이후 각 요소를 통해 LCM을 계산,
최종적으로 하나의 결과를 반환하게 된다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 2] 멀리 뛰기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 귤 고르기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 숫자의 표현 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 카펫 (JavaScript) (0) 2024.11.04 [프로그래머스 Level 2] 올바른 괄호 (JavaScript) (0) 2024.11.04