[js] 주사위의 개수 (lv.0, 정답률 89%)

sookyoung.k·2024년 5월 17일
0
post-thumbnail

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n ≤ box의 원소
  • 주사위는 상자와 평행하게 넣습니다.

나의 풀이

function solution(box, n) {
    return box.map((v) => {
            return Math.floor(v / n);
        })
        .reduce((acc, cur) => {
            return (acc *= cur);
        }, 1);
}

각각 몫을 구하고 곱하면 되겠군.. 해서 메서드들을 사용했다

  • v/n의 몫을 구하기 위해서 map()을 통해서 각 요소들의 나눈 몫의 값으로 배열 내부의 값들을 바꿔줬다.
  • 그리고 reduce()를 사용해서 각 값을 차곡차곡 곱해줌

다른 풀이 1

function solution(box, n) {
    let [width, length, height] = box;

    return Math.floor(width / n) * Math.floor(length / n) * Math.floor(height / n);

}
  • 구조분해할당을 사용한 멋진 풀이! 로직은 비슷하다 reduce()를 풀어서 리턴함

다른 풀이 2

function solution(box, n) {
    return box.reduce((acc,v) => acc * Math.floor(v / n), 1);
}
  • 이건 나의 방식을 한 줄로 더 간단하게 줄일 수 있었던 방법
profile
영차영차 😎

0개의 댓글