46. Permutations - Java

문제 LINK

난이도 : medium
Top Like 100

https://leetcode.com/problems/permutations/

내용

Given an array nums of distinct integers, return all the possible permutations.
You can return the answer in any order.

-> 주어진 정수로 만들 수 있는 순열 생성

###

예전에 했었던 순열,조합이 기억이 안난다..
다시 순열/조합 짜는 로직에 대해서 연습해보기.

풀이
접근 : 재귀
방문여부를 check
깊이가 n(nums 배열의 길이)에 도달할 때 int[] addNum 에 담겨진 값을 리스트에 추가
재귀 끝나고 난뒤 방문 여부 체크 해제

class Solution {
    static List<List<Integer>> answer;
    public List<List<Integer>> permute(int[] nums) {
        answer = new LinkedList<>();
        boolean[] check = new boolean [nums.length];
        int [] addNum = new int [nums.length];

        permuteCalc(nums, 0, check, addNum);

        return answer;    
    }

    public static void permuteCalc(int [] nums , int d, boolean [] check, int [] addNum){
            if(d==nums.length){
                List<Integer> res = new ArrayList<>();
                for(int i=0;i<nums.length;i++){
                    res.add(addNum[i]);
                }
                answer.add(res);
                return ;    
            }

            for(int i=0;i<nums.length;i++){

                if(!check[i]){
                    addNum[d] = nums[i];
                    check[i] = true;
                    permuteCalc(nums, d+1, check, addNum);
                    check[i] = false;

                }

            }
    }

}

'알고리즘' 카테고리의 다른 글

[Leetcode] 22. Generate Parentheses - java  (0) 2023.02.23
[Leetcode] 78. Subsets - Java  (0) 2023.02.22
763. Partition Labels - JAVA  (0) 2023.02.16
BOJ 18870 좌표압축 - Java  (0) 2021.10.27
BOJ 7662 이중 우선순위 큐 - java  (0) 2021.10.15