React

46. Permutations

Medium
Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.
Example 1:
Input: nums = [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Plain Text
복사
Example 2:
Input: nums = [0,1] Output: [[0,1],[1,0]]
Plain Text
복사
Example 3:
Input: nums = [1] Output: [[1]]
Plain Text
복사
Constraints:
1 <= nums.length <= 6
10 <= nums[i] <= 10
All the integers of nums are unique.

My solution

중복은 들어오지 않음
temp 배열에 사용한 요소를 넣어줌, temp의 길이와 입력받은 배열의 길이가 같다면 return;하고, 그 요소의 방문을 취소한다.
반복문의 다음 루프에서 그 다음 요소를 사용하고 동일하게 위의 조건에 따라 return;됨
return 전에는 순열의 조건을 만족한 것이므로 perm배열에 저장
다른사람풀이

소스코드

/** * @param {number[]} nums * @return {number[][]} */ const permute = function (nums) { const input = [...nums]; const perm = []; const temp = []; const chk = [...Array(nums.length)]; const dfs = () => { if (temp.length === input.length) { perm.push([...temp]); return; } for (let i = 0; i < input.length; i++) { if (!chk[input[i]]) { chk[input[i]] = 1; temp.push(input[i]); dfs(i + 1); chk[input[i]] = 0; temp.pop(); } } }; dfs(); return perm; }; test('TC1', () => { expect(permute([1, 2, 3])).toStrictEqual([ [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1], ]); }); // test('TC2', () => { // expect(permute([0, 1])).toStrictEqual([ // [0, 1], // [1, 0], // ]); // }); // test('TC3', () => { // expect(permute([1])).toStrictEqual([[1]]); // });
JavaScript
복사