[프로그래머스 자바스크립트] Lv.1 최대 공약수와 최소 공배수

전유정·2023년 4월 20일

프로그래머스

목록 보기
3/4
post-thumbnail

부트캠프 코테를 준비하며..

알고리즘 위주의 수업이었던 C++과 파이썬 수업에서도
항상 스스로 코드를 짜는 게 아닌, 다른 사람들의 코드를 이해하고, 외웠던 나는
사실 Lv.1 문제도 심혈을 기울이는 초보 개발자 지망생이었다..😳
따라서 블로그엔, 내가 직접 짜고 다른 사람에게 설명해줄 수 있는 코드만 적어나가기로 다짐했다.

문제

최대 공약수와 최소 공배수

❓ 문제 설명

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

📜 문제 풀이

내 풀이

사용한 메서드는 다음과 같다.

Number.isInteger : 주어진 값이 정수인지 판별하는 메서드


function solution(n, m) {
    var answer = [];
    let Upper = 0; 
    let Lower = 0;
    let bigger = 0;
    
    for(let i=0; i<=n; i++){
     if (Number.isInteger(n / i) == true && Number.isInteger(m / i) == true) 
          Upper = i;  
    }
        Lower = Upper * (n/Upper) * (m /Upper)

answer.push(Upper); 
answer.push(Lower);
return answer; 
}

최대 공약수는 어떤 약수를 나누어 떨어지게 하는 정수 중 가장 큰 수다.
따라서, n과 m을 같은 숫자로 나누면서, Number.isInteger 메서드를 통해 정수인지, 확인하고 모두 true가 나오는 가장 큰 숫자를 Upper에 저장한다.


이미지 출처

최소 공약수의 경우 다음 그림과 같이, 최대 공약수, n을 최대 공약수로 나눈 몫, m을 최대 공약수로 나눈 몫을 곱한 값이므로 Lower에 해당 값을 넣어준다.

profile
깨달음을 얻고 롱런하는 공간

0개의 댓글