문제 1. 머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
function solution(box, n) {
let answer = 1;
for(let i=0; i<3; i++){
answer *= Math.floor(box[i]/n)
}
return answer;
}
solution 함수는 box와 n이라는 두 개의 매개변수를 입력으로 받습니다. box는 세 개의 숫자로 이루어진 배열이고, n은 나눌 수입니다.
answer 변수를 1로 초기화합니다. 이 변수는 최종 결과를 담을 변수입니다.
for 루프를 사용하여 box 배열의 각 요소에 대해 연산을 수행합니다. i 변수는 0부터 2까지 반복됩니다.
각 box[i]를 n으로 나눈 몫을 구하고, Math.floor 함수를 사용하여 정수로 변환합니다.
answer 변수에 box[i]를 n으로 나눈 몫을 곱해줍니다. 이렇게 하면 세 개의 결과가 차례대로 곱해집니다.
for 루프가 종료되면 answer 변수에는 세 개의 연산 결과가 모두 곱해진 값이 저장됩니다.
최종적으로 answer 값을 반환합니다.
문제 2. 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
let answer = 0;
for(let i=n; i>=1; i--) {
let isCount = false;
for(let num =2; num<i-1; num++){
if(i % num == 0) {
isCount = true;
}
}
if(isCount){
answer += 1;
}
}
return answer;
}
solution 함수는 n이라는 매개변수를 입력으로 받습니다. n은 양의 정수입니다.
answer 변수를 0으로 초기화합니다. 이 변수는 소수의 개수를 담을 변수입니다.
for 루프를 사용하여 i 변수를 n부터 1까지 감소시킵니다.
isCount 변수를 false로 초기화합니다. 이 변수는 소수 여부를 나타내는 플래그입니다.
두 번째 for 루프를 사용하여 num 변수를 2부터 i - 1까지 반복합니다.
if 문을 사용하여 현재의 i가 num으로 나누어떨어지는지 확인합니다. 나누어떨어지면 isCount 변수를 true로 설정합니다.
isCount 변수가 true인 경우, 즉 i가 어떤 숫자로 나누어떨어진 경우, 소수가 아니므로 answer 변수를 1 증가시킵니다.
내부 for 루프가 종료되면, 현재의 i에 대한 소수 여부가 결정됩니다.
외부 for 루프가 종료되면, n 이하의 모든 숫자에 대한 소수 여부가 확인되고, answer 변수에 소수의 개수가 저장됩니다.
최종적으로 answer 값을 반환합니다.
문제 3. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
function solution(numbers) {
const sortedNumbers = numbers.sort((a,b)=>b-a);
return sortedNumbers[0] * sortedNumbers[1];
}
solution 함수는 numbers라는 매개변수를 입력으로 받습니다.
이 매개변수는 숫자 배열입니다.
sortedNumbers라는 변수에 numbers 배열을 내림차순으로 정렬한 결과를 저장합니다.
sort 메서드는 비교 함수 (a, b) => b - a를 사용하여 정렬합니다.
이 비교 함수는 a와 b를 비교하여 b - a의 결과가 양수이면 b가 a보다 큰 것으로 판단하여 정렬합니다.
정렬된 sortedNumbers 배열의 첫 번째 원소와 두 번째 원소를 곱한 결과를 반환합니다.
이 함수는 입력된 숫자 배열에서 가장 큰 두 수를 선택하여 곱한 값을 반환합니다.
sort 메서드를 사용하여 배열을 내림차순으로 정렬하므로, sortedNumbers 배열의 첫 번째 원소는 가장 큰 수이고, 두 번째 원소는 그 다음으로 큰 수입니다.
이 두 수를 곱한 결과를 반환합니다.
문제 4. i 팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
const getFactorial = (i) => {
let result = 1;
for(let j = 1; j<=i; j++) {
result *= j;
}
return result;
}
function solution(n) {
var answer = 0;
for(let i=1; ; i++){
const result = getFactorial(i);
if(n<result){
return i - 1;
}
}
}
getFactorial 함수는 i라는 매개변수를 입력으로 받습니다.
이 매개변수는 팩토리얼을 계산할 숫자입니다.
result라는 변수에 1로 초기화합니다.
for 루프를 사용하여 j를 1부터 i까지 증가시키며 result에 j를 곱해 나갑니다.
이렇게 하면 result에는 i의 팩토리얼 값이 저장됩니다.
result를 반환합니다.
solution 함수는 n이라는 매개변수를 입력으로 받습니다. 이 매개변수는 숫자입니다.
answer라는 변수를 0으로 초기화합니다.
무한루프를 돌면서 i를 1부터 증가시키며 다음을 수행합니다.
getFactorial(i)를 호출하여 i의 팩토리얼 값을 구합니다.
만약 n이 result보다 작다면, 현재 i에서 1을 빼고 반환합니다.
이는 n보다 작은 팩토리얼 값들 중 가장 큰 값의 인덱스를 나타냅니다.
이 함수는 주어진 숫자 n보다 작은 팩토리얼 값들 중 가장 큰 값의 인덱스를 반환합니다.
getFactorial 함수를 사용하여 각 i의 팩토리얼 값을 계산하고, n과 비교하여 n보다 작을 때까지 반복합니다.
n보다 작아지는 순간의 i에서 1을 빼고 반환하여 가장 큰 값의 인덱스를 구합니다.