[프로그래머스] 주사위의 개수
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 주사위의 개수 · js 주사위의 개수
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 주사위의 개수 · js 주사위의 개수
문제 설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 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 |
[10, 8, 6] | 3 | 12 |
입출력 예 설명
입출력 예 #1
- 상자의 크기가 가로 1, 세로 1, 높이 1이므로 모서리의 길이가 1인 주사위는 1개 들어갈 수 있습니다.
입출력 예 #2
- 상자의 크기가 가로 10, 세로 8, 높이 6이므로 모서리의 길이가 3인 주사위는 12개 들어갈 수 있습니다.
나의 풀이
function solution(box, n) {
let answer = box.map((x) => Math.floor(x / n));
return answer.reduce((a, b) => a * b);
}
나의 두번째 풀이(Code Refactoring)
function solution(box, n) {
let result = [];
let answer = 1;
for (i = 0; i < box.length; i++) {
result.push(~~(box[i] / n));
}
for (j = 0; j < result.length; j++) {
answer *= result[j];
}
return answer;
}
// box에 담긴 요소들을 주사위 길이 만큼 나누고 나눈 요소들의 값을 모두 곱해서 주사위가 들어갈 크기를 추출
참고 할 만한 다른 사람의 코드
function solution(box, n) {
let [width, length, height] = box;
return (
Math.floor(width / n) * Math.floor(length / n) * Math.floor(height / n)
);
}
// 구조분해 할당