본문 바로가기

알고리즘/리트코드

46. Permutations

파이썬으로 재귀 구현할 때랑 다른 느낌이다. 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