# Level 0. 주사위의 개수
주사위의 개수
문제 설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- box의 길이는 3입니다.
- box[0] = 상자의 가로 길이
- box[1] = 상자의 세로 길이
- box[2] = 상자의 높이 길이
- 1 ≤ box의 원소 ≤ 100
- 1 ≤ n ≤ 50
- n ≤ box의 원소
- 주사위는 상자와 평행하게 넣습니다.
풀이
1
2
3
4
5 | const solution = (box, n) => {
return (
Math.floor(box[0] / n) * Math.floor(box[1] / n) * Math.floor(box[2] / n)
);
};
|
- x축에 들어갈 수 있는 주사위 개수 _ y축에 들어갈 수 있는 주사위 개수 _ z축에 들어갈 수 있는 주사위 개수
# Level 0. 최댓값 만들기 (1)
최댓값 만들기 (1)
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers의 길이 ≤ 100
문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13 | const solution = (numbers) => {
let firstMax = 0;
let secondMax = 0;
numbers.forEach((number) => {
if (numbers[i] > firstMax) {
secondMax = firstMax;
firstMax = numbers[i];
} else if (numbers[i] > secondMax) {
secondMax = numbers[i];
}
});
return firstMax * secondMax;
};
|
# Level 0. 팩토리얼
팩토리얼
문제 설명
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 _ 4 _ 3 _ 2 _ 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
제한사항
문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 | const solution = (n) => {
const memo = new Array(10).fill(0);
memo[0] = 1;
memo[1] = 1;
memo[2] = 2;
const _memoFactorial = (number) => {
if (memo[number]) return memo[number];
memo[number] = number * _memoFactorial(number - 1);
return memo[number];
};
_memoFactorial(10);
let maxFactorial = 0;
memo.some((num, index) => {
if (num <= n) {
maxFactorial = index;
return false;
}
return true;
});
return maxFactorial;
};
|
- 코드는 길지만 읽었을 때 풀이의 흐름을 알 수 있도록 작성함.
# Level 0. 가장 가까운 같은 글자
가장 가까운 같은 글자
문제 설명
문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.
예를 들어, s=”banana”라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.
- b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
- a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
- n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
- a는 자신보다 두 칸 앞에 a가 있습니다. 이는 - 2로 표현합니다.
- n도 자신보다 두 칸 앞에 n이 있습니다. 이는 - 2로 표현합니다.
- a는 자신보다 두 칸, 네 칸 앞에 a가 - 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.
- 따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.
문자열 s이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.
제한사항
문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | function solution(s) {
const answer = [];
const charMap = {};
s.split("").forEach((char, index) => {
if (charMap[char] === undefined) {
answer[index] = -1;
charMap[char] = index;
return;
}
answer[index] = index - charMap[char];
charMap[char] = index;
});
return answer;
}
|