본문 바로가기

CodingTest Practice

[Codility 문풀] MaxProductOfThree

Codility 문제 - MaxProductOfThree

배열에 저장된 요소 중 3개의 요소를 곱한 값 중 제일 큰 값을 반환

 

■ 문제 풀이

1) 문풀 설명
- 배열에 주어진 요소 중 3가지의 조합을 통해 제일 큰 값을 구하는 문제이다.
- 배열의 길이는 3<N<100,000

- 배열 요소의 범위는 -1,000 ~ 1,000

2) 예제
array a = [-3, 1, 2, -2, 5, 6] 이 주어진 경우,
(2, 4, 5) product인 경우가 60으로 제일 큰 값을 반환한다.


3) 힌트
배열을 정렬
세개의 수를 곱해서 제일 큰 값이 나올 수 있는 경우의 수를 파악
- (음) * (음) * (양) : 정렬한 배열에서 가장 작은 값 2개와 제일 큰 양수 값을 곱한 값
- (양) * (양) * (양) : 정렬한 배열에서 가장 큰 값 3개를 곱한 값
위의 경우에 수를 통해 획득한 값의 대소관계를 비교하여, 둘 중 큰 값을 결과 값으로 반환

 

import java.util.Arrays;

public class MaxProductOfThree {

    static int compare(int[] a){
        int max = 0;
        int length = a.length;
        int value1 = a[0] * a[1] * a[length-1];
        int value2 = a[length-1] * a[length-2] * a[length-3];

        return value1 > value2 ? value1 : value2;
    }

    static int solution(int[] A){
        Arrays.sort(A);
        compare(A);

        return compare(A);
    }

    public static void main(String[] args) {
        int[] A = {-3, 1, 2, -2, 5, 6};
        int result = solution(A);

        System.out.println("결과 : " + result);
    }
}

 

'CodingTest Practice' 카테고리의 다른 글

[Codility 문풀] Nesting  (0) 2022.01.10
[Codility 문풀] Brackets  (0) 2022.01.10
[codingTest] anagram  (0) 2022.01.07
[Codility 문풀] Distinct  (0) 2022.01.06
Codility 문풀 - Fish  (0) 2022.01.03