[LeetCode] 611. Valid Triangle Number

Chobby·2026년 5월 11일

LeetCode

목록 보기
1069/1077

😎풀이

  1. nums를 오름차 순으로 정렬
  2. 정렬된 배열에서 가장 큰 수를 i로 선택
  3. 가장 작은수와, 두번째로 큰 수부터 확인하며 두 수의 합이 가장 큰 수를 초과한다면 해당 범위 내 모든 경우의 수 합산
  4. 초과하지 못한다면, 가장 작은 수를 다음 가장 작은 수로 갱신하며 반복
  5. 만들 수 있는 삼각형의 수 반환
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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글