파이썬으로 재귀 구현할 때랑 다른 느낌이다. JavaScript로 알고리즘문제풀이가 더 익숙해지도록 문제를 더 많이 풀어야겠다.
배열에 원소가 있으면 넘어가고 없으면 추가해준후 dfs를 돌렸다.
const permute = function(nums) {
const res = []
dfs(res, [], nums)
return res
};
const dfs = (res, arr, nums) => {
if (arr.length === nums.length) {
res.push([...arr])
return
}
nums.forEach(n => {
if (!arr.includes(n)) {
dfs(res, [...arr, n], nums)
}
})
}
그냥 for문이 더 깔끔한 느낌이다.
const permute = function(nums) {
const res = []
dfs(res, [], nums)
return res
};
const dfs = (res, arr, nums) => {
if (arr.length === nums.length) {
res.push([...arr])
return
}
for (let i = 0; i < nums.length; i++) {
if (!arr.includes(nums[i])) dfs(res, [...arr, nums[i]], nums)
}
}
'알고리즘 > 리트코드' 카테고리의 다른 글
704. Binary Search (0) | 2022.04.13 |
---|---|
62. Unique Paths (0) | 2022.04.10 |
53. Maximum Subarray (0) | 2022.04.05 |
187. Repeated DNA Sequences (0) | 2022.04.03 |
127. Word Ladder (0) | 2022.03.31 |