
😎풀이
nums를 오름차 순으로 정렬
- 정렬된 배열에서 가장 큰 수를
i로 선택
- 가장 작은수와, 두번째로 큰 수부터 확인하며 두 수의 합이 가장 큰 수를 초과한다면 해당 범위 내 모든 경우의 수 합산
- 초과하지 못한다면, 가장 작은 수를 다음 가장 작은 수로 갱신하며 반복
- 만들 수 있는 삼각형의 수 반환
function triangleNumber(nums: number[]): number {
const n = nums.length
let triangles = 0
const sortedNums = nums.toSorted((a, b) => a - b)
for(let i = n - 1; i >= 2; i--) {
let left = 0
let right = i - 1
while(left < right) {
if(sortedNums[left] + sortedNums[right] > sortedNums[i]) {
triangles += right - left
right--
} else {
left++
}
}
}
return triangles
};