머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box
와 주사위 모서리의 길이 정수 n
이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
box
의 길이는 3입니다.box[0]
= 상자의 가로 길이box[1]
= 상자의 세로 길이box[2]
= 상자의 높이 길이box
의 원소 ≤ 100n
≤ 50n
≤ box
의 원소box | n | result |
---|---|---|
[1, 1, 1] | 1 | 1 |
[10, 8, 6] | 3 | 12 |
입출력 예 #1
입출력 예 #2
💡 문제풀이 과정
상자의 가로 길이 / 주사위 모서리 길이(n) * 세로 길이 / n * 높이 길이 / n
를 해줘야 하는데, 주사위 길이로 나눴을 때의몫만 필요
하므로Math.floor()
를 이용한다.
Math.floor(box[0] / n) * Math.floor(box[1] / n) * Math.floor(box[2] / n);
- 답안 1번:
for( …of)
반복문을 이용하여answer *= Math.floor(상자의 길이 값 / n);
해줄 수 있다.- 답안 2번:
reduce()
이용하여box.reduce((a, b) ⇒ a * Math.floor(b / n) , 1);
하여 바로 리턴할 수도 있다.
✅ 답안 #1
function solution1(box, n) {
let answer = 1;
for (v of box) answer *= Math.floor(v / n);
return answer;
}
✅ 답안 #2
function solution(box, n) {
return box.reduce((acc, cur) => acc * Math.floor(cur / n), 1);
}