프로그래머스 Lv1. 최대공약수와 최소공배수

용상윤·2021년 3월 20일
0
post-custom-banner

문제

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


접근

  • n > m 일 경우를 생각한다.
  • 약수의 배열을 만든다.
  • 두 수를 i=2부터 나누기 시작해서 두 수 모두 나눠지면 i로 계속 나누고
  • 두 수 모두 i로 나눠지지 않는다면 i++

코드

📌 python

from functools import reduce
def solution(n, m):
    i_list = [1]
    if n <= m :
        x = n
        y = m
    else :
        x = m
        y = n
    
    i=2
    while(i <= x) :
        if(x%i==0 and y%i==0) :
            i_list.append(i)
            x = x/i
            y = y/i
        else :
            i += 1
    
    GCD = reduce(lambda a,b: a*b, i_list)
    return [GCD, GCD*x*y]

📌 js

function solution(n, m) {
    let x, y = 0
    const iList = [1]
    if(n <= m) {
        x = n;
        y = m;
    } else {
        x = m;
        y = n;
    }
    let i=2;
    while(i<=x) {
        if(x%i==0 && y%i==0) {
            iList.push(i)
            x = x/i
            y = y/i
        } else {
            i++;
        }
    }
    const GCD = iList.reduce((a,b) => a*b);
    return [GCD, GCD*x*y]
}
profile
달리는 중!
post-custom-banner

0개의 댓글