개발자 '쑥말고인절미'
[프로그래머스] JS 최대공약수와 최소공배수 본문
문제
내 답안
function solution(n, m) {
var answer = [];
let originN = n;
let originM = m;
while(m!=0){
let r = n % m;
n = m;
m = r;
}
answer.push(n);
answer.push(originN * originM / n);
return answer;
}
메모
세상...유클리드 호제법.... 한시간 넘게 싸매고 있었는데 친구가 문제를 풀었다며 유클리드 호제법을 찾아보라 했다.... 정말.... 대단하다.... ^^..............
내가 생각한 방법으로는 테스트 5, 8, 13, 14, 15를 실패했고 n과 m 모두 5인 경우에도 제대로 작동하지 않았다. 퇴근하고 앉아서 한시간 넘게 고민하다보니 점점 피곤함이 몰려와서 내 뜻대로 코딩하길 포기하고 유클리드 호제법을 사용해 해결했다 하휴 아래 추가한 소스가 내 의견대로 작성했지만 테스트를 통과하지 못한 소스이다...^^ 버리기 아쉬워서... 남겨놓는다.... 나중에 내가 다시 보면서 수정하지 않을까 라는 기대도.....^^......
function solution(n, m) {
var answer = [];
let numN = [];
let numM = [];
let sum = 1;
let originN = n;
let originM = m;
for(let i = 2; i <= n; i++){
while(n % i == 0){
n /= i;
numN.push(i);
}
}
for(let i = 2; i <= m; i++){
while(m % i == 0){
m /= i;
numM.push(i);
}
}
let min = numN.filter(x => numM.includes(x));
if(min.length == 0){
answer.push(sum);
} else {
for(let i = 0; i < min.length; i++){
sum *= min[i];
}
answer.push(sum);
}
let max = (originN * originM) / sum;
answer.push(max);
return answer;
}
참고링크
https://twpower.github.io/69-how-to-get-gcd-and-lcm
[Algorithm] 코드로 최대공약수(GCD)와 최소공배수(LCM) 구하기
Practice makes perfect!
twpower.github.io
'STUDY > 코딩테스트' 카테고리의 다른 글
[프로그래머스] JS 제일 작은 수 제거하기 (0) | 2022.08.19 |
---|---|
[프로그래머스] JS 짝수와 홀수 (0) | 2022.08.19 |
[프로그래머스] JS 콜라츠 추측 (0) | 2022.08.16 |
[프로그래머스] JS 평균 구하기 (0) | 2022.08.15 |
[프로그래머스] JS 하샤드 수 (0) | 2022.08.15 |