코딩/데일리 코딩

[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);
  
};