728x90
문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
제한 사항
두 수는 1이상 1000000이하의 자연수입니다.
입출력 예
n, m, return
3, 12, [3, 12]
2, 5, [1, 10]
최대공약수와 최소공배수를 반환하는 함수이다.
최대공약수는 두 수중에 작은수부터 1씩 감소시키면서 둘다 나누어떨어지는 가장 첫번째 수를 찾는 방식을 택했다.
최소공배수는 두 수를 곱한 값에서 최대공약수를 나눠주면 된다. 그 다음 두 수를 배열로 묶어 반환하는 함수를 만들면 되는 문제. 간단하다.
function solution(n, m) {
// 둘 중 작은 값을 찾고
let small = m > n ? n : m
// 최대공약수 변수를 선언한 다음
let maxCommonDivisor
// 작은 수 부터 감소시키면서,
for (let i = small; i >= 1; i--) {
// 둘다 나눠 나머지가 없는 경우를 찾아서,
if (m % i === 0 && n % i === 0) {
// 가장 먼저 나온 값이 최대공약수
maxCommonDivisor = i
break
}
}
// 최소공배수는 두 값을 곱한 값에서 최대공약수를 나눠준 값
leastCommonMultiple = n*m/maxCommonDivisor
return [maxCommonDivisor, leastCommonMultiple];
}
약수의 합 문제도 풀었다.
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
n은 0 이상 3000이하인 정수입니다.
입출력 예
n, return
12, 28
5, 6
위 문제와 같이 단순하다. 우선 약수는 자기자신으로부터 시작하니, 먼저 n 값을 넣어두고, 1부터 n/2까지 나머지가 0인 값을 계속 더해주면 된다.
function solution(val) {
// 입력값을 넣어두고,
let res = val
// 입력값/2까지 나머지가 0인 값을 더해준다.
for (let div = 1; div <= val / 2; div++) {
if (val % div === 0) {
res += div
}
}
return res
}
'daily' 카테고리의 다른 글
23.04.29. Foreign Key Convention? (0) | 2023.04.29 |
---|---|
23.04.24. node.js, express, mongoose, mongoDB 관계, 구조 (0) | 2023.04.25 |
23, 16주차 (0) | 2023.04.20 |
23.04.17. programmers 코딩테스트 문제 풀기[5] (0) | 2023.04.20 |
23.04.17. programmers 코딩테스트 문제 풀기[4] (0) | 2023.04.20 |