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

front_pica·2021년 5월 21일

문제

풀이과정

  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개의 댓글