728x90
🔥 Programmers Lv.1 : 최대공약수와 최소공배수
🔍 문제 : " 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. "
📎 조건 :
∙ 두 수는 1이상 1000000이하의 자연수입니다.
∙ 두 수는 1이상 1000000이하의 자연수입니다.
👉🏻 My answer
function solution(n, m) {
var answer = [];
let a = Math.min(n, m);
let b = Math.max(n, m);
for(let i = a; i >= 1; i--) {
if(a % i == 0 && b % i == 0) {
return [i, (a * b / i)]
}
}
return answer;
}
: n과 m의 최대공약수를 먼저 찾고, 이후에는 {(n * m) / 최대공약수} 라는 공식을 활용해 n과 m의 최소공배수를 찾은 것이 핵심!
👉🏻 Another ways
function gcdlcm(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}
: 내가 알던 for문이 아냐
'알고리즘 도장깨기' 카테고리의 다른 글
프로그래머스 Lv.1 "시저 암호" (1) | 2022.12.01 |
---|---|
프로그래머스 Lv.1 "공 던지기" (1) | 2022.11.29 |
프로그래머스 Lv.1 "3진법 뒤집기" (2) | 2022.11.28 |
프로그래머스 Lv.1 "부족한 금액 계산하기" (3) | 2022.11.28 |
프로그래머스 Lv.1 "음양 더하기" (2) | 2022.11.28 |
댓글