[lv. 1] 최대공약수와 최소공배수

HSKwon·2023년 10월 24일
0

https://school.programmers.co.kr/learn/courses/30/lessons/12940

function solution (n, m) {
  // ✅ 생각정리
  // n = 3
  // m = 12
  // 이들의 최대공약수는 3
  // 이들의 최소공배수는 12 (n*m/최대공약수)
  
  // 1️⃣ n과 m 중 최소값을 찾아서 그 최소값부터 1까지 모든 수를 도출해낸다. (ex. 3, 2, 1)
  
  // 2️⃣ 도출해낸 수로 n과 m을 각각 나누고, n과 m 모두 나누어 떨어지는 i를 도출해낸다.
  // => i가 2인경우 12%2는 0이지만 3%2는 0이 아니므로 if 문의 조건을 만족하지 않는다
  // => 결과적으로 조건을 충족하는 i는 3 또는 1 인데 조건을 만족하는 가장 큰 수를 도출해내기 위해서 
  // for 문에서 조건을 만족하는 수를 도출하면 break를 하여 루프를 끝낸다.
  
  // 3%3(O), 3%2(X), 3%1(O)
  // 12%3(O), 12%2(O), 12%1(O)
  
  const arr = [];
  let Max;
  let Min;
  for (let i = Math.min(n,m); i>=1; i--) {
    if (n % i === 0 && m % i ===0) {
      Max = i;
      break;
    }
  }
  Min = (n*m)/Max;
  arr.push(Max, Min);
  return arr;
}


solution(3,5);
profile
공부한 내용이나 관심 있는 정보를 글로 정리하며 익숙하게 만들고자 합니다.

0개의 댓글

관련 채용 정보