[LeetCode] 46. Permutations

Chobby·2024년 9월 4일
1

LeetCode

목록 보기
82/194

백 트레킹을 이용해 쉽게 풀이할 수 있는 문제이다.

순열을 구해 결괏값으로 반환하면 됨

😎풀이

function permute(nums: number[]): number[][] {
    // 결과를 저장할 배열
    const result = [];

    // 재귀 함수 정의
    function backtrack(current: number[], remaining: number[]) {
        // 기저 조건: 남은 숫자가 없으면 현재 순열을 결과에 추가
        if (remaining.length === 0) {
            result.push([...current]);
            return;
        }

        // 남아있는 각 숫자에 대해 재귀 호출
        for (let i = 0; i < remaining.length; i++) {
            // 현재 숫자를 선택
            current.push(remaining[i]);
            // 선택한 숫자를 제외한 나머지 숫자들로 새 배열 생성
            const newRemaining = remaining.slice(0, i).concat(remaining.slice(i + 1));
            // 재귀 호출
            backtrack(current, newRemaining);
            // 백트래킹: 선택한 숫자 제거
            current.pop();
        }
    }

    // 초기 호출
    backtrack([], nums);

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

0개의 댓글