[20230222_프로그래머스 알고리즘_Lv.1]

YunTrollpark·2023년 2월 22일
0

1. 최대공약수와 최소공배수

문제 설명

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

제한 사항
• 두 수는 1이상 1000000이하의 자연수입니다.

function solution(n, m) {
  let small = 0
  let big = 0
    if(n>m){
      small = m
      big = n
    } else { 
      small = n
      big = m
    }

  for(i=big; i>0; i--){
    if(small%i === 0 && big%i=== 0 ){
      return [i,i*(big/i)*(small/i)]
    } 
  }
}





// 해설
// 1. 받은 n, m 중에 둘중 뭐가 큰수고 작은수인지 구분
// 2. for문을 역순!!! 으로 돌아야 함(최대 공약수는 나누어지는 수 중 제일 큰 수이기 때문!
// 3. 그래서 for문을 돌아서 i는 큰수를 할당, i는 0보다 크고, i는 -- 증감이 아니라 감소!!!
// 4. 만약 큰수와 작은수 각각을 i로 나눠서 둘다 0이라면 해당 숫자를 배열의 첫번째 인자로 return
// 5. 그렇게 나온 최대 공약수를 가지고 최소 공배수를 구함. 최소 공배수는 최대 공약수 x (받은인자1/최대공약수) x (받은 인자2/최대공약수)

이거는... 잘 안풀려서 넘 오래 붙들고 있었다 ㅠㅜㅠ 그래도 풀려서 다행이다... for문은 감소식으로도 반복을 돌릴 수 있다는거 항상 기억!!!

profile
코딩으로 세상에 이야기하는 개발자

0개의 댓글