1. 주사위의 개수
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
- 정답은
function solution(box, n) {
let answer = 0;
let box_W = box[0]
let box_D = box[1]
let box_H = box[2]
let dice = n
let dice_W = Math.floor(box_W / n);
let dice_D = Math.floor(box_D / n);
let dice_H = Math.floor(box_H / n);
answer = dice_W * dice_D * dice_H
return answer;
}
1. 일단 공식을 생각해 보았습니다. 한변에 주사위가 몇개씩 들어갈 수 있는지 계산 한 다음에 다 곱해주면 구할 수 있습니다.
2. 하지만 정수로 구해야 함으로 Math.floor를 사용해 소수점 이하는 버림해주었습니다.
3. 각 변에 들어가는 주사위의 갯수는 변의 길이 / 주사위 변의 길이 입니다. 주사위는 정육면체 이므로 그냥 n으로 해주면 됩니다.
4. 그리고 다 곱해주면 끝 !
2. 합성수 찾기
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요
- 정답은
function solution(n) {
let num = [];
let count = 0;
for (let i = 2; i <= n; i++) {
for (let j = 1; j <= i; j++) {
if (i % j === 0) {
num.push(i);
}
}
if (num.filter(function (x) { return x === i; }).length >= 3) {
count++;
}
}
return count;
}
- let num = [];는 빈 배열 num을 초기화합니다.
- let count = 0;는 변수 count를 0으로 초기화합니다. 이 변수는 세 개 이상의 약수를 갖는 수의 개수를 세기 위해 사용됩니다.
- for (let i = 2; i <= n; i++)은 2부터 n까지의 수에 대해 반복합니다.
- 내부에 있는 for (let j = 1; j <= i; j++)은 i까지의 수에 대해 반복합니다. 이 반복문은 i를 j로 나누어 나머지가 0인 경우를 찾아내어 num 배열에 i를 추가합니다.
- if (num.filter(function (x) { return x === i; }).length >= 3)은 num 배열에서 i와 같은 수의 개수가 3 이상인 경우를 확인합니다. filter 함수를 사용하여 num 배열에서 i와 같은 수만 남기고, 그 개수를 세어서 3 이상인지 확인합니다.
- 조건을 만족하는 경우, count 변수를 증가시킵니다.
- 모든 반복이 완료된 후, count 값을 반환합니다.
이렇게 변환한 자바스크립트 코드는 주어진 범위 내에서 약수의 개수를 세는 방식으로 동작합니다. 반환된 count 값은 적어도 세 개의 약수를 갖는 수의 개수를 나타냅니다.
3.팩토리얼
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요
조건 : i! ≤ n
- 정답은
function solution(n) {
let result = 0
for(let i = 1 ; i <= 10; i++) {
if(n >= getFacto(i)) {
result = i
continue
} else {
break
}
}
return result
}
function getFacto(num) {
if(num > 1) return num*getFacto(num-1)
return num
}
함수 getFacto(num)은 재귀적인 방식을 사용하여 주어진 숫자 num의 팩토리얼 값을 계산합니다. num이 1보다 큰 경우에는 num에 getFacto(num-1)을 곱한 값을 반환하고, 그렇지 않은 경우에는 num 자체를 반환합니다.
함수 solution(n)은 1부터 10까지의 숫자 범위에서 getFacto(i)의 값을 확인하면서, n보다 작거나 같은 가장 큰 팩토리얼 값을 찾습니다. 이를 위해 result 변수를 0으로 초기화하고, i를 1부터 10까지 반복하면서 다음을 수행합니다:
- n이 getFacto(i)보다 크거나 같은 경우: result 변수를 i로 업데이트하고 반복문을 계속 진행합니다.
- n이 getFacto(i)보다 작은 경우: 반복문을 종료하고 결과인 result 값을 반환합니다.
결과적으로, 함수 solution(n)은 입력된 숫자 n에 대해 팩토리얼 값을 계산하여, n보다 작거나 같은 가장 큰 팩토리얼 값을 반환합니다.