본문 바로가기
알고리즘/프로그래머스 문제-JS

[JS]최대공약수와 최소공배수

by sweesweet 2022. 6. 27.

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

 

코딩테스트 연습 - 최대공약수와 최소공배수

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

programmers.co.kr

예전에 백준으로(파이썬) 유클리드 호제법의 방법으로 풀었던 최대공약수인데 사람은 망각의 동물인지라 씩 다 까먹었다.

정리 겸 다신 까먹지 않기 위해서 풀고 코드를 올린다

function solution(n, m) {
    let p,q
    let tmp
    if(n===m){
        return [n,n]
    }
    //if(n>m){
    //     [p,q]=[m,n]} 테스트케이스 자체가 n이 더 큰값은 없었다
   else
   {
        [p,q]=[n,m]
    }

    while(true){
        if(q%p===0){
            break
        }
        tmp=q%p
        q=p
        p=tmp
    }//while전체가 유클리드 호제법으로 문제를 푼 것이다.
    return [p,m/p*n]
}

이번에 배운 재귀로 풀기

function solution(n, m) {
 function recursion(n,m){
     if(m%n===0){
         return n
     }
     return recursion(m%n,n)
 }

    
    return[recursion(m,n),m/recursion(m,n)*n]
}

별차이는 없다. 이게 훨씬 간편해 보인다ㅎㅎ

'알고리즘 > 프로그래머스 문제-JS' 카테고리의 다른 글

[JS]최소직사각형  (0) 2022.07.06
[JS] 비밀지도  (0) 2022.07.03
[JS]예산  (0) 2022.06.26
[JS]숫자 문자열과 영단어  (0) 2022.05.31
[JS]가운데 글자 가져오기  (0) 2022.05.31