-
[자바스크립트] 프로그래머스 Lv.1 최대공약수와 최소공배수[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 23. 22:30
주어진 두 수의 최대공약수와 최소공배수를 구해 배열에 넣어야 하는 문제.
이번에도 수학 몰라서 당하고 싶진 않았으므로 두 수의 관계를 검색해본다...
두 자연수의 곱은 최대공약수 * 최소 공배수 라고 한다!! (지식+1)
따라서, 둘 중 하나를 먼저 구해보기로 하고, 쉬워보이는 최대공약수를 공략해본다.
let answer = [] for (i=n; i>0; i--) { // 한 숫자에서 시작해서 1씩 줄여가며 반복 if( m % i === 0 && n % i === 0) { // 최대 공약수를 발견하면 console.log(i) answer.push(i) // 정답배열에 넣고 break; // 바로 반복문을 종료해요 } } answer.push(n*m/answer[0]) // 두 수를 곱한것을 최대공약수로 나누면 최소공배수를 구할 수있음
또 또 for과 if로 끝냈지만 우선 만족하고 (....) 돌려본다!
역시 통과지만 속도가 느리다. 점수도 2점.
다른 사람들의 답변을 찾아봤다
function gcdlcm(a, b) { var r; for(var ab= a*b;r = a % b;a = b, b = r){} return [b, ab/b]; }
.....!!!!!>......... 졌다............
쓴 사람 혹시 천재인가...?
똑같이 for문 써도 이렇게 예쁘게 나올수도 있구나..
발전없는 내 풀이 반성해 ㅠㅠ...
https://programmers.co.kr/learn/courses/30/lessons/12940
코딩테스트 연습 - 최대공약수와 최소공배수
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의
programmers.co.kr
'[TIL] 카테고리 > 알고리즘 문제풀기' 카테고리의 다른 글
[자바스크립트] 프로그래머스 Lv.1 K번째수 (0) 2022.05.26 [자바스크립트] 프로그래머스 Lv.1 나머지가 1이 되는 수 찾기 (0) 2022.05.24 [자바스크립트] 프로그래머스 Lv.1 예산 (0) 2022.05.23 [자바스크립트] 프로그래머스 Lv.1 약수의 합 (0) 2022.05.21 [자바스크립트] 프로그래머스 Lv.1 약수의 개수와 덧셈 (0) 2022.05.21