-
[Codility - Counting Elements] MaxProductOfThreeAlgorithm/구현(Brute force, Back tracking, etc.) 2021. 9. 19. 14:28728x90
- N 은 3 이상 100,000 이하이다. 따라서, 최악의 경우 모든 triplet의 경우의 수는 99998*99997*99996 이므로 당연히 시간초과가 난다. 따라서 다른 방법을 사용해야 한다.
function solution(A) { A.sort((a,b)=>a-b) let answer = A[A.length-1]*A[A.length-2]*A[A.length-3] answer = Math.max(A[0]*A[1]*A[A.length-1], answer) return answer }
- sort를 해준 후, 가장 오른쪽의 3개의 세트를 곱한 값이 answer 후보군이 된다.
- 다음으로, 음수 2개 * 양수 1개를 곱한 값이 더 큰 양수가 될 수 있다. 따라서, 가장 처음 두 값과 맨 오른쪽 값을 곱한 값과 비교해서 더 큰 수를 반환하면 된다.
- 배열의 갯수가 3개일 때, 4개일 때 , 5개 등등일 때, 음수가 2개,3개,4개 등등의 경우의 수를 모두 고려해볼 수 있는데 결과적으로 위의 코드대로 하면 원하는 값이 나오게 된다.
'Algorithm > 구현(Brute force, Back tracking, etc.)' 카테고리의 다른 글
백준 13458 시험 감독 (0) 2021.11.05 백준 3190 뱀 (0) 2021.11.04 [Codility - Counting Elements] GenomicRangeQuery (0) 2021.09.19 [Codility - Counting Elements] CountDiv (0) 2021.09.19 [Codility - Counting Elements] MissingInteger (0) 2021.09.19