최대공약수, 최소공배수를 구하는 문제는 유클리드 호제법
을 이용하면 문제를 쉽게 해결할 수 있다. 우리가 sort()함수를 쓰는 것처럼 최대공약수와 최소공배수 문제를 해결할 때에는 최대공약수 공식을 암기하면 조금 유용할 것이다.
최대 공약수의 문제는 재귀함수를 호출하는 것이다.
const GCB = (a,b) => a%b ? GCB(b,a%b) : b;
최소 공배수의 문제는 최대 공약수로 구한 값으로 나눠주기만 하면 된다.
const LCM = (a,b) => a*b / GCB(a,b);
배열에 있는 여러 개의 수들의 최소 공배수를 구하기 위해서는 JS의 reduce()
메서드를 이용하면 된다.
reduce()
메서드는 누산기 역할을 하는데 인자로 a와 b가 있다고 가정하면
array.reduce((a,b) => a+b)는 배열의 첫번째 원소와 둘째를 더한 값을 a에 할당하고 이제는 더한 값과 세번째 원소 값을 더한 값을 또 a에 더해가는 과정의 반복이다.
// 프로그래머스 lv.2 N개의 최소공배수 문제 인용
let array = [2,6,8,14];
array.reduce((a,b) => LCM(a,b));
이렇게 코드를 짜면 배열 4개의 최소공배수를 구할 수 있다.
이 팁만 암기하면 카카오 코테 합격 가능한거죠 ?