😎풀이

기초적인 백 트레킹 문제이다.

생각할 것은 많지 않고 주어진 nums를 활용하여 중복을 허용하지 않는 Subsets를 만들면 된다.

백 트레킹의 개념을 이해하고 있다면 어렵지 않게 풀 수 있음

function subsetsWithDup(nums: number[]): number[][] {
    // 입력 배열을 정렬하여 중복 집합 제거에 활용
    nums.sort((a, b) => a - b)

    const result = []

    function backTracking(start: number, current: number[]) {
        result.push([...current])

        for(let i = start; i < nums.length; i++) {
            // 중복 방지
            if(i > start && nums[i] === nums[i-1]) continue
            
            current.push(nums[i])

            backTracking(i + 1, current)

            current.pop()
        }
    }

    backTracking(0, [])

    return result
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글