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 |