프로그래머스 1단계 : 최대공약수와 최소공배수
코딩테스트 연습 > 연습문제 > 최대공약수와 최소공배수
✔ 문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
✔ 제한 사항
두 수는 1이상 1000000이하의 자연수입니다.
✔ 입출력 예
n | m | return |
---|---|---|
3 | 2 | [3,12] |
2 | 5 | [1,10] |
✔ 문제풀이
function solution(n, m) {
let a;
for(let i = 0; i <= n; i++) {
if(n % i === 0 && m % i === 0) {
a = i;
}
}
let b = n * m / a;
return [a, b];
}
✔ 설명
간단하게 최소공배수와 최대공약수를 구해준 뒤 조건에 맞게 출력해줍니다. 참 쉽죠?
✔ 다른사람의 풀이
function gcdlcm(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}
for문의 숨겨진 기능인가요..? 반복문을 r=a%b 이 0이 된다면 종료되도록 만들었군요. 깔끔합니다.
댓글