프로그래머스 Level 1 - 최대공약수와 최소공배수 - Math.max(...arr)

크롱·2023년 10월 4일
0

코딩테스트

목록 보기
27/61

문제

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

풀이

다른 분의 풀이를 참고했습니다.

  1. 우선 n과 m을 크기대로 정렬함

  2. 서로의 공약수를 arr에 push하기

  3. 최대공약수는 Math.max를 통해 구한다.
    // 여기까진함

  4. 최소공배수는 두 수를 곱한후 최대공약수를 나눠주면된다.

function solution(n, m) {
  const numbers = [n, m];
  numbers.sort((a, b) => a - b);
  const [min, max] = numbers;

  let arr = [];
  for (let i = 1; i <= min; i++) {
    if (min % i === 0 && max % i === 0) {
      arr.push(i);
    }
  }

  const GCD = Math.max(...arr);
  const LCM = (min * max) / GCD;

  return [GCD, LCM];
}
profile
👩‍💻안녕하세요🌞

0개의 댓글