본문 바로가기

Algorithm/문제풀이

Codility Lesson6 - MaxProductOfThree

🔍 문제


 

 

MaxProductOfThree coding task - Learn to Code - Codility

Maximize A[P] * A[Q] * A[R] for any triplet (P, Q, R).

app.codility.com

 

✏️ 풀이 - JS


 

배열의 3 원소를 곱해서 가장 큰 수가 나오는 값을 return 해주면 된다.
먼저, 배열 A를 오름 차순으로 정렬해준다. 만약 배열의 모든 수가 음수나 양수라면, 아래 코드에서는 n이 최대 값이 된다. 이 때, 함정이 음수와 양수가 함께 있을 경우이다. 음수는 절대값이 클 수록 왼쪽으로 정렬되기 때문에 절대값이 큰 A[0] * A[1]을 해서 두 음수를 곱해 양수가 되는 경우를 생각해주고, 마지막으로 가장 큰 수 A[A.length]를 곱해준다.

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

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

   return Math.max(n, m);
}

시간복잡도는 O(N * log(N)), 정확도와 효율성 모두 100%가 나왔다.

 

'Algorithm > 문제풀이' 카테고리의 다른 글

Codility Lesson6 - Triangle  (0) 2019.08.10
Codility Lesson6 - Distinct  (0) 2019.08.10
Codility Lesson5 - CountDiv  (0) 2019.08.08
Codility Lesson5 - MinAvgTwoSlice  (0) 2019.08.08
Codility Lesson5 - GenomicRangeQuery  (0) 2019.08.07