저장을 습관화

프로그래머스 LV.0 주사위의 개수 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 주사위의 개수

ctrs 2023. 9. 20. 19:48

프로그래머스 LV.0 주사위의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

주사위의 개수


2. 문제 설명

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


3. 제한 사항

- box의 길이는 3입니다.

- box[0] = 상자의 가로 길이

- box[1] = 상자의 세로 길이

- box[2] = 상자의 높이 길이

- 1 ≤ box의 원소 ≤ 100

- 1 ≤ n ≤ 50

- n ≤ box의 원소

- 주사위는 상자와 평행하게 넣습니다.


4. 예시

box n result
[1, 1, 1] 1 1
[10, 8, 6] 3 12


5. 기본 제공 코드

function solution(box, n) {
    var answer = 0;
    return answer;
}


6. 제출한 내 답

const solution = (box, n) => {
  return (
    Math.floor(box[0] / n) * Math.floor(box[1] / n) * Math.floor(box[2] / n)
  );
};

 

6-2. VSC에 작성한 내용

const solution = (box, n) => {
  // 가로 세로에 맞추고 높이에서 한번 더 계산하면 될것 같은데
  // 가로 box[0]/n, 세로 box[1]/n 소수점은 드랍
  // 높이 box[2]/n 소수점 드랍
  // 가로*세로*높이
  // let 가로 = Math.floor(box[0] / n);
  // let 세로 = Math.floor(box[1] / n);
  // let 높이 = Math.floor(box[2] / n);
  // console.log(`${가로},${세로},${높이}`);
  // return 가로 * 세로 * 높이;
  return (
    Math.floor(box[0] / n) * Math.floor(box[1] / n) * Math.floor(box[2] / n)
  );
};

// 테스트
console.log(solution([1, 1, 1], 1));
console.log(solution([10, 8, 6], 3));


7. 특이사항

없음


8. 다른 사람이 작성한 답

8-1. reduce

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

 

8-2. map

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