본문 바로가기

코딩테스트/codility

MaxProductOfThree

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

 

MaxProductOfThree coding task - Learn to Code - Codility

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

app.codility.com

 

배열에서 세쌍의 숫자를 추출했을 때 세 수를 곱한 값이 최대가 되는 경우를 찾아야 한다.

 

배열은 음수를 포함하므로 두 경우를 생각하면 된다.

 

배열을 정렬한 후,

 

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