기초적인 백 트레킹 문제이다.
생각할 것은 많지 않고 주어진 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
};