문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한사항
- 두 수는 1 이상 1000000 이하의 자연수입니다.
설명 더 보기
문제 풀이
function solution(n, m) {
const answer = [];
// 최대공약수를 a로 지정
let a;
// n의 크기만큼 반복하는 반복문 생성
for (let i = 0; i <= n; i++) {
// n과 m을 나눴을 때, 나머지가 모두 0인 i를 찾아 가장 큰 수를 변수 a에 입력
if (n % i === 0 && m % i === 0) {
a = i;
}
}
// 최소공배수를 b로 지정, n과 m의 곱셈 값을 최대공약수 a로 나눗셈
let b = n * m / a;
// 최대공약수 a와 최소공배수 b를 answer에 추가 및 답안 제출
answer.push(a);
answer.push(b);
return answer;
}
if 문에 두 수의 최대공약수를 구하는 조건을 넣어 n과 m의 최대공약수를 먼저 찾고, 이후에는 {(n * m) / 최대공약수}라는 공식을 활용해 n과 m의 최소공배수를 찾은 뒤, 두 수를 배열에 넣어 제출하였다. 이미 알고 있는 수학적 개념과 공식을 어떻게 코드로 바꿔야 하는지에 대해 고민이 필요한 문제였다.
'ETC > 코딩테스트 연습' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 (JavaScript) (0) | 2021.07.31 |
---|---|
[프로그래머스] 체육복 (JavaScript) (1) | 2021.07.31 |
[프로그래머스] 수박수박수박수박수박수? (JavaScript) (0) | 2021.07.30 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (JavaScript) (0) | 2021.07.23 |
[프로그래머스] 같은 숫자는 싫어 (JavaScript) (0) | 2021.07.23 |