[js] 주사위의 개수 (lv.0)

sookyoung.k·2024년 5월 25일
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);
}
  • 배열의 각 요소를 n으로 나눠 배열을 바꿔 저장
  • Math.floor(v/n)으로 나눈 결과의 소수점을 버리고 정수 부분만 반환한다
  • reduce() 메서드를 사용해 배열의 요소들을 모두 곱하여 값을 낸다

다른 풀이 1

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

내가 너무 쓸데없이 메서드를 많이 쓰고 있다는 사실을 깨달았다 ㅋㅋㅋㅋ

다른 풀이 2

function solution(box, n) {
    return box.map(v=>~~(v/n)).reduce((a,v)=>a*v,1);
}

-~~(v/n)Math.floor(v/n)과 동일한 역할을 한다. 이거 봤었는데 또 나와서! 쓰면서 기억할 겸 적어둠.

profile
영차영차 😎

0개의 댓글