프로그래밍/알고리즘, 프로그래밍 언어

[코딩테스트] Codility 6-2 MaxProductOfThree (JavaScript)

제이콥J 2022. 1. 29. 16:00

링크 : https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/

 

Solution

정답률 : 100%

시간복잡도 : O(N * log(N))

 

우선 배열 A를 오름차순으로 정렬한다.

 

그리고 여러가지 경우의 수 중 최대값을 구하는 방법은 다음과 같다.

 

  • 양수 * 양수 * 양수 : 양수 중 절대값이 가장 큰 3개 곱하기 (마지막 index 3개 곱하기)
  • 양수 * 양수 * 음수 : 이 경우가 최대값이 되려면 배열의 엘리먼트가 3개일 때 뿐이므로, 고려하지 않아도 됨
  • 양수 * 음수 * 음수 : 절대값이 가장 큰 음수 2개와 절대값이 가장 큰 양수 곱하기
  • 음수 * 음수 * 음수 : 절대값이 가장 작은 음수 3개 곱하기 (마지막 index 3개 곱하기)

 

function solution(A) {
  A.sort((a,b)=>a-b);

  const m = A[A.length-1] * A[A.length-2] * A[A.length-3];
  const n = A[0] * A [1] * A[A.length-1];

  return Math.max(n, m);
}
반응형