https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/
배열에서 세쌍의 숫자를 추출했을 때 세 수를 곱한 값이 최대가 되는 경우를 찾아야 한다.
배열은 음수를 포함하므로 두 경우를 생각하면 된다.
배열을 정렬한 후,
1. 가장 작은 수 2개가 음수인 경우 가장 작은 수 2개와 가장 큰 수 1개를 곱한 경우와
2. 가장 큰 수 3개를 곱한 경우
두 경우를 비교하여 큰 값을 취하면 된다.
import java.util.*;
class Solution {
public int solution(int[] A) {
if (A.length == 3) return A[0] * A[1] * A[2];
Arrays.sort(A);
int max = A[A.length - 3] * A[A.length - 2] * A[A.length - 1];
if (A[0] < 0 && A[1] < 0) max = Math.max(max, A[0] * A[1] * A[A.length - 1]);
return max;
}
}
'코딩테스트 > codility' 카테고리의 다른 글
Fish (0) | 2023.10.04 |
---|---|
Triangle (0) | 2023.10.04 |
PassingCars (0) | 2023.09.29 |
Distinct (0) | 2023.09.29 |
FrogRiverOne (0) | 2023.09.29 |