: 문제를 해결하는 과정에서 해의 후보군을 구성하고, 그 후보군이 조건을 만족하지 않으면 되돌아가(백트랙) 다른 경로를 탐색하는 방법이다.
function findSubsets(nums) {
const result = [];
// 백트래킹 함수: 현재 선택된 요소들을 추적하는 `path`와 탐색할 시작 인덱스 `start`
function backtrack(start, path) {
// 현재 경로를 결과에 추가 (부분 집합의 하나)
result.push([...path]);
// 남은 요소들을 하나씩 탐색
for (let i = start; i < nums.length; i++) {
// 현재 숫자를 경로에 추가
path.push(nums[i]);
// 다음 숫자로 재귀 호출
backtrack(i + 1, path);
// 백트래킹: 경로에서 마지막 숫자를 제거
path.pop();
}
}
// 빈 경로로 시작하여 백트래킹 시작
backtrack(0, []);
return result;
}
// 사용 예시
const nums = [1, 2, 3];
console.log(findSubsets(nums));