프로그래머스 - N개의 최소공배수

front_pica·2021년 5월 21일
0

문제

풀이과정

  1. 최대공약수를 구하는 함수와 최소공배수를 구하는 함수를 선언한다.
  2. for문을 통해서 주어진 배열의 길이만큼 순회하면서 최소공배수를 구한다.
  3. for문을 순회하면서 구해진 answer의 최소공배수를 return 해준다.

코드

function solution(arr) {
  //정렬이 안되있을 경우를 대비하여 오름차순으로 정렬해준다.
  arr.sort((a,b) => a - b);
  //최소공배수를 담을 변수
  let answer = 0;
  answer = lcm(arr[0], arr[1]);
  //주어진 배열의 길이가 1일때는 그대로 그 배열의 원소를 리턴
  if(arr.length === 1) return arr[0];
  //주어진 배열의 길이가 2일때는 처음에 구해진 answer로 리턴
  if(arr.length === 2) return answer;

  for(let i = 2; i < arr.length; i ++) {
    answer = lcm(answer, arr[i]);
  }  

  return answer
}

//최대 공약수
function gcd(num1, num2) {
  return (num1 % num2) === 0 ? num2 : gcd(num2, num1 % num2);
}

/최소 공배수
function lcm(num1, num2) {
  return num1 * num2 / gcd(num1, num2);
} 
profile
한걸음씩

0개의 댓글