[프로그래머스] 최대공약수와 최소공배수

lisoh·2022년 3월 11일
0
post-thumbnail

문제

문제 설명

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

제한 사항

두 수는 1이상 1000000이하의 자연수입니다.

풀이 과정

으... 못풀었다 ㅠㅠ

/*
구하는 것: 입력받은 두 수의 최대공약수와 최소공배수
배열의 맨 앞: 최대공약수
배열의 두번째: 최소공배수
두 수는 1<=n<=1000000 자연수

*자몽이가 짠 순서*
첫번째, 두 수의 최대공약수를 어떻게 구할 것인가? 
-> 둘 중에 더 작은 수를 알아야 한다. 
-> 어떤 수로 나눠야하는 지 알아야 한다.
=> 유클리드호제법이 어렵다면, 무작정 1부터 나눠보세요!
두번째, 두 수의 최소공배수는 어떻게 구할 것인가?
=> 최소공배수와 최대공약수와의 관계를 한 번 생각해보세요!
   최소공배수 = n * m / 최대공약수 
세번째, 최대공약수와 최소공배수를 어떻게 순서대로 넣을 것인가?
=> 변수에 할당하지말고 그냥 return 해보는 건 어떨까요?
*/
function solution(n, m) {
    const min = ( n > m ) ? m : n;
    const gcd = 
    var answer = [];
    return answer;
}

스터디 멤버 분들이 주신 팁들

1.
숫자 하나의 약수를 구한다.
약수 배열들을 교집합을 찾는다.
그 교집합 중 가장 큰 숫자를 찾는다.
2.
공통약수를 구하는 아주 기본적인 방법을 아무도 안쓰셨군요....
n과 m 중 작은 수부터 for(let i=max; i>0; i--) 해서
n과 m을 i로 계속 나누다가 둘다 나머지가 0이 나온다면...?
고것이 최대공약수
profile
프론트엔드 개발자를 꿈꾸는 개발초보 호랑이

0개의 댓글