A : N개의 정수로 구성 된 배열
(P, Q, R)이 삼각형일 때
0 ≤ P < Q < R < N --> idx
A[P] + A[Q] > A[R],
A[Q] + A[R] > A[P],
A[R] + A[P] > A[Q].
배열에 삼각형이 있으면 1, 없으면 0을 리턴
N is an integer within the range [0..100,000]
each element of array A is an integer within the range [−2,147,483,648..2,147,483,647]
-> OverFlow 한방 먹었다...
맥스값이 들어간 조건은 항상 성립하는 것을 볼 수 있다.
따라서 마지막 세번째 조건 즉, 가장 작은수와 두번째로 작은 수의 합이 맥스값보다 큰지만 확인하면 된다.
O(N*log(N))
import Foundation
import Glibc
public func solution(_ A : inout [Int]) -> Int {
let cnt = A.count
var addedNum: Int64
if(3 > cnt) { return 0 }
A.sort()
for i in 0..<cnt-2 {
if(A[i] < 0) { continue }
addedNum = Int64(A[i]) + Int64(A[i+1])
if(addedNum > A[i+2]) { return 1 }
}
return 0
}