본문 바로가기

코딩테스트

최대공약수와 최소공배수

문제 설명

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

제한사항

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

나의풀이

JS

function solution(n, m) {
    let result = []
    let gcd = []
    let lcm = []
    for(let i=1;i<=m;i++){
        
        if(m%i===0&&n%i===0){  
            gcd.push(i)
        }
        
        if(n*i%m*i===0){
            lcm.push(n*i)
        }
    }
     result.push(Math.max(...gcd))
     result.push(Math.min(...lcm))
    return result
}

 

정리

gcd : 최대공약수를 담을 배열
lcm : 최소공배수를 담을 배열
for : 현재 문제에서는 m 이 가장 큰 수이므로 m 을 기준으로 계산하였으나 반대의 경우 Math.max()메서드를 사용하여 n 과 m 중 더 큰값을 찾는다면 문제없을것으로 생각됨

'코딩테스트' 카테고리의 다른 글

삼총사  (0) 2025.03.15
이상한 문자 만들기  (0) 2025.03.14
직사각형 별찍기  (0) 2025.03.03
행렬의 덧셈  (0) 2025.03.02
문자열 다루기 기본  (0) 2025.02.28