728x90
//n과 m중 큰값과, 작은값 선언
function solution(n, m) {
let answer = [];
let minNum = Math.min(n, m);
let maxNum = Math.max(n, m);
answer[0] = gcd(minNum, maxNum);
answer[1] = lcm(minNum, maxNum);
return answer;
}
// 최대공약수
function gcd(minNum, maxNum){
return (minNum % maxNum) === 0 ? maxNum : gcd(maxNum, minNum % maxNum);
}
// 최소공배수
function lcm(minNum, maxNum){
return minNum * maxNum / gcd(minNum, maxNum);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
// console.log(gcdlcm(3,12));
최대공약수(Greatest Common Divisor, GCD)
두 수 a, b의 최대공약수는 gcd(a, b) 또는 (a, b)로 나타냄.
최소공배수(Lowest Common Multiple, LCM)
두 수 a, b의 최소공배수는 lcm(a, b) 또는 [a, b]로 나타냄.
유클리드 호제법
- a,b 를 서로 나눌때, 나누어진다면 b가 최대 공약수 이다. (a>b)
- 만약 a,b가 나누어지지 않으면 b와 a를 b로 나눈 나머지를 다시 나눈다
- 서로가 나누어지면 a%b 가 최대공약수이다. 나누어지지 않는다면 위처럼 b와 a를 b를 나눈 나머지를 다시 나눈다.
조건연산자 ? :
조건식을 판별하여 참이냐 거짓이냐에 따라 다음 문장을 선택적으로 실행
예: max_value = (a>b) ? a : b //a,b중 큰값을 저장.
재귀함수란
어떤 함수 내부에서 다시 자기 자신을 부르는 함수를 의미한다.
마치 반복문을 돌리듯 자기 자신을 끊임없이 부르다 특정조건이 되면 빠져나오는 함수를 재귀함수라고한다.
아래는 더 짧은 다른 답안
function solution(num1, num2) {
const gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);
const lcm = (a, b) => a * b / gcd(a, b);
return [gcd(num1, num2), lcm(num1, num2)];
}
728x90
'Programmers > javascript' 카테고리의 다른 글
[JS] Programmers 정수 제곱근 판별 ☑ (0) | 2022.06.10 |
---|---|
[JS] Programmers 모의고사 ☑ (0) | 2022.06.09 |
[JS] Programmers K번째수 ☑ (0) | 2022.06.09 |
[JS] Programmers 이상한 문자 만들기 ☑ (0) | 2022.06.08 |
[JS] Programmers 부족한 금액 계산하기 ☑ (0) | 2022.06.08 |