반응형
주사위의 개수
🎈 문제설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 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) {
var answer = 0;
const a = Math.floor(box[0]/n);
const b = Math.floor(box[1]/n);
const c = Math.floor(box[2]/n);
answer = a*b*c;
return answer
}
👀 Math.floor() : 내림
Math.ceil() 은 소수값이 존재할 때 값을 올리는 역활을 하는 함수이며,
Math.floor() 는 소수값이 존재할 때 소수값을 버리는 역활을 하는 함수이며,
Math.round() 는 소수값에 따라 올리거나 버리는 역활을 하는 반올림 함수입니다.
// Math.floor([숫자]);
Math.ceil(-324.6) // -324
Math.floor(-324.6) // -325
Math.round(-324.6) // -325
💻 다른 사람 풀이
function solution(box, n) {
let [width, length, height] = box;
return Math.floor(width / n) * Math.floor(length / n) * Math.floor(height / n);
}
💡 내가 풀이한 소스코드는 길지만 직관적이고
다른사람의 풀이는 구조분해할당을 이용하여 짧고 생산적이라고 생각한다.
반응형
'📂 JavaScript > 코딩테스트 - 프로그래머스' 카테고리의 다른 글
[프로그래머스 JS] 홀수 vs 짝수( for문, if문 / map(), 삼항연산자 / % ) (1) | 2024.10.17 |
---|---|
[프로그래머스 JS] 암호 해독 (0) | 2024.04.18 |
[프로그래머스 JS] 가위 바위 보( split(), map(), join() / 스프레드연산자, 객체 ) (0) | 2024.03.19 |
[프로그래머스 JS] n보다 커질 때까지 더하기( for...of, if문, break ) (3) | 2024.02.14 |
[프로그래머스 JS] 원하는 문자열 찾기 (단항연산자, toUpperCase()) (1) | 2024.02.14 |