juni
최대공약수 최대공배수 본문
function solution(n, m) {
let gcd = 1;
let lcm = 0;
const answer = [];
for (let i = 1; i <= Math.max(n, m); i++) {
if (n % i === 0 && m % i === 0) {
gcd = i;
}
}
lcm = (n * m) / gcd;
answer.push(gcd);
answer.push(lcm);
return answer;
}
풀이를 위해 유클리드 호재법을 이용했습니다.
유클리드 호제법의 원리는 두 수를 나눈 나머지를 r이라고 할 때, 두 수 중 작은 수와 r의 최대공약수가 두 수의 최대공약수와 같다는 것이다. 이러한 과정을 반복하다가 나머지가 0이 될 때 나누는 수가 두 수의 최대공약수인 것입니다.
위를 활용하여
최대 공약수는 1부터 N(a, b 중 작은 수)까지 순회하면서 a와 b를 각각 나누었을 때 그 나머지가 둘 다 0이되는 수, 즉 나누어 떨어지는 수를 찾고
최소 공배수는 두 수를 곱한 값을 최대공약수로 나눈 수임을 활용하여 풀이했습니다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 ( JS, 시저 암호 ) (0) | 2025.01.16 |
---|---|
프로그래머스 JavaScript ( 크기가 작은 부분 문자열 ) (0) | 2025.01.08 |
프로그래머스 ( 삼총사 ) (0) | 2025.01.07 |
이상한 문자 만들기 (0) | 2024.09.30 |
직사각형 별찍기 (0) | 2024.09.21 |