-
[Javascript] 프로그래머스 주사위의 개수STUDY/Code TEST 2023. 8. 22.
[level 0] 주사위의 개수 - 120845
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
성능 요약
메모리: 33.4 MB, 시간: 0.04 ms
구분
코딩테스트 연습 > 코딩테스트 입문
채점결과
Empty
문제 설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열
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개 들어갈 수 있습니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
코드
function solution(box, n) { let result = 0; for(let i=0; i<box.length; i++){ if(i === 0){ result += parseInt(box[i]/n) continue } result *= parseInt(box[i]/n) } return result let [width, length, height] = box return parseInt(width/n) * parseInt(length/n) * parseInt(height/n) }
function solution(box, n) { let [width, length, height] = box return parseInt(width/n) * parseInt(length/n) * parseInt(height/n) }
코드 설명
주사위를 최대한 많이 채우기 위해서는 박스의 가로, 세로, 높이의 길이를 파악해
주사위의 모서리 길이로 박스 각각의 길이를 나눠 곱하면 넣을 수 있는 전체 부피가 나온다.
box 배열에 있는 값들을 각각 나눠 곱하기 위해서 나는 반복문을 사용했지만,
그럴 경우 첫번째 값을 새로운 변수에 할당해줘야 하는 번거로움이 있다. 그리고 딱 봐도 코드가 안이쁘다.
훨씬 더 효율적인 방법으로는 구조분해할당을 사용하는 것이다. 어차피 배열의 모든 값을 수정해서 곱해야하는데,
구조분해할당을 이용해 세 개의 값을 한 번에 초기화 시키고 바로 곱해서 return 해버리는 방법이다.
이는 다른사람의풀이를 보고 해본것이며 굉장히 효율적이다.
구조분해할당을 항상 효율적이고 좋은 방식이라 생각하지만 이렇게 막상 문제가 다가왔을 때 떠올리지 못한다는 것은 항상 나를 답답하게 만든다. 하지만 이렇게 적용해보고 다시 복기하는 과정을 통해, 다음에는 조금이나마 머릿속에 창의적인 해결법이 떠오르기를 바라면서 끄적여본다 ㅜㅜ.'STUDY > Code TEST' 카테고리의 다른 글
[javascript] 프로그래머스 무작위로 K개의 수 뽑기 (1) 2023.07.27 프로그래머스 최빈값 구하기 (0) 2023.07.14 프로그래머스 같은 숫자는 싫어 - 미완 (0) 2023.07.04 프로그래머스 최댓값 만들기 (2) (0) 2023.07.01 프로그래머스 가운데 글자 가져오기 (0) 2023.06.29