코딩/데일리 코딩
[Section3 Daily Coding 🌟] largestProductOfThree
2워노
2023. 6. 13. 01:35
🌟 문제
- 정수를 요소로 갖는 배열을 입력받아 3개 요소를 곱해서 나올 수 있는 최대값 리턴
- (주의사항)
- 배열은 1차원 배열
- 배열의 요소는 음수 및 0을 포함
- 배열길이는 3이상
🌟 입출력 예시
let output = largestProductOfThree([2, 1, 3, 7]);
console.log(output); // --> 42 (= 2 * 3 * 7)
output = largestProductOfThree([-1, 2, -5, 7]);
console.log(output); // --> 35 (= -1 * -5 * 7)
🌟풀이
- 단순히 sort 메서드로 내림차순으로 정렬해서 arr[0], arr[1], arr[2] 곱하면 될거라 생각했으나, 음수를 고려하지 않아서 오답
- 3개를 중복없이 뽑아서 곱한값을 배열에 저장해둔 뒤, 해당 배열의 최대값 반환
const largestProductOfThree = function (arr) {
// 3개뽑아서 곱하는 조합 (중복X)
// 조합 중 가장 큰 수
let combinations = [];
for(let i = 0 ; i <arr.length - 2; i++){
for(let j = i+1 ; j <arr.length -1 ; j++ ){
for(let k= j+1 ; k <arr.length ; k++ ){
combinations.push(arr[i]*arr[j]*arr[k]);
}
}
}
return Math.max(...combinations);
};