Javascript

[javascript] 프로그래머스 - 주사위의 개수

jojv 2023. 6. 15. 15:49
728x90
반응형

📕 문제 설명

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

 

📗제한사항

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

 

📘 입출력 예와 설명

box n result 설명
[1, 1, 1] 1 1 상자의 크기가 가로1, 세로1, 높이1 이므로 모서리의 길이가 1인 주사위는 1개 들어갈 수 있습니다.
[10, 8, 6] 3 12 상자의 크기가 가로 10, 세로 8, 높이 6이므로 모서리의 길이가 3인 주사위는 12개 들어갈 수 있습니다.

 

📙풀이

주어진 n으로 box의 가로, 세로, 높이를 나누면 각각에 몇개의 주사위가 들어갈 수 있는지 알 수 있습니다.

그러나 여기서 나눈 값이 딱 떨어지지 않고 소수점이 나올 경우를 고려해야겠습니다.

그 다음 가로, 세로, 높이에 들어갈 수 있는 갯수를 곱해주면 답을 구할 수 있습니다.

function solution(box, n) {
    var arr = box.map(v => Math.floor(v/n))
    return arr.reduce((a,b)=>a*b)   
}

map을 이용해서 나눈 값의 배열을 새로 담아주고,

reduce를 이용해서 배열의 모든 요소를 곱해주었습니다.

 

 

글 읽어 주셔서 감사합니다.
부족한 부분이 있다면 댓글로 알려주시면 감사히 배우겠습니다:)

728x90