A : N개의 정수로 구성 된 비어있지 않은 배열
삼중항 (P, Q, R) : A[P] A[Q] A[R] (0 ≤ P < Q < R < N).
삼중항의 최대 값을 리턴!
N is an integer within the range [3..100,000]
each element of array A is an integer within the range [−1,000..1,000]
우선 항이 3개이고 0,1,2의 경우를 고려해 마지막 수가 2이면 0으로 예외 처리한다.
음수가 1개, 2개일 때로 구분해서 풀었다.
음수가 1개라면 어떤 조합에도 끼지 못하므로 정렬한 뒤 가장 끝의 세 수를 곱했다.
음수가 2개라면 경우가 달라지는데,
음수 음수로 시작하면 세번째 값과 마지막 세 수의 값을 비교해야한다.
O(N*logN)
public func solution(_ A : inout [Int]) -> Int {
var minusNum = Int()
var plusNum = Int()
var ans = Int()
A.sort()
if(A[A.count-1] == 2) { return 0 }
if((A[0] < 0) && (A[1] > 0)) {
ans = A[A.count-1] * A[A.count-2] * A[A.count-3]
} else {
minusNum = A[0] * A[1] * A[A.count-1]
plusNum = A[A.count-1] * A[A.count-2] * A[A.count-3]
ans = plusNum > minusNum ? plusNum : minusNum
}
return ans
}