코딩 테스트/프로그래머스 level2

N개의 최소공배수

fullfish 2022. 9. 5. 03:31

아이디어

최소공배수를 구하면 된다.

주어진 값들중 제일 큰 값이상일 것이며

최소공배수에 주어진 값들을 나눴을때 모두 나머지가 0이어야한다

 

알고있었는데 딱히 써본적없는 arr.every를 썼다 (some도 있음)

 

코드

function solution(arr) {
  let answer = 0;
  let i = Math.max(...arr);
  while (true) {
    if (arr.every((ele) => i % ele === 0)) {
      answer = i;
      break;
    }
    i++;
  }
  return answer;
}

 

다른 사람의 좋은 코드

function nlcm(arr) {
  return arr.reduce((a, b) => (a * b) / gcd(a, b));
}

function gcd(a, b) {
  return a % b ? gcd(b, a % b) : b;
}

응축해가면서 품

temp = 첫 두 요소의 곱 / 첫 두 요소의 최대공약수

temp = temp * 3번째 요소 / gcd(temp,3번째 요소)

...

이런식으로 품

'코딩 테스트 > 프로그래머스 level2' 카테고리의 다른 글

올바른 괄호  (0) 2022.09.08
최솟값 만들기  (0) 2022.09.08
이진 변환 반복하기  (0) 2022.09.08
JadenCase 문자열 만들기  (0) 2022.09.08
최댓값과 최솟값  (0) 2022.09.08