Algorithm 10 : largestProductOfThree

hyeongirlife·2021년 10월 18일
0

Algorithm

목록 보기
10/30

설명

  • 정수를 요소를 갖는 배열을 입력받아 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)

생각

  1. 우선 오름차순으로 정렬하자.
  2. 음수가 있는 경우와 아닌 경우를 생각해보자
  3. 음수가 있다면 뒤에 음수 2개를 곱하면 양수가 되고, 거기에 배열의 맨 끝을 곱하면 된다.
  4. 음수가 없다면 맨 끝 3개 요소를 곱하면 된다.

풀이

const largestProductOfThree = function (arr) {
 const sorted = arr.slice().sort((a,b) => a-b)
 const count1 = sorted[sorted.length-1]*sorted[sorted.length-2]*sorted[sorted.length-3]
 const count2 = sorted[0]*sorted[1]*sorted[sorted.length-1]
 return Math.max(count1,count2)

깨달은 점

  1. 음수가 포함된 정렬방식을 처음 알게 됐다. 이번 문제를 풀면서 꼭 가져가야할 공식이다.
  2. 음수가 포함된 경우와 그렇지 않은 경우를 분리해야 했는데 이 때 3개 요소를 곱해야하기 때문에 음수가 2개를 곱했다면 가장 큰 양수를 곱해야하고, 음수가 없다면 맨 끝 3개를 곱한다는 생각을 하는게 매우 중요했다. 비록 생각해냈지 못해서 레퍼런스를 참고했지만 비슷한 문제를 풀 때 이 문제를 기억해야겠다.
profile
머릿속에 있는 내용을 정리하기

0개의 댓글

관련 채용 정보