alorithm/programmers

[LeetCode] permutation sequence

Hannana. 2024. 8. 13. 01:40
728x90
반응형

https://leetcode.com/problems/permutation-sequence/

 

 

문제 파악

1~n 까지의 수의 순열을 구하고, 그 중 k번째 순열을 문자열 형태로 리턴

  • 1 <= n <= 9
  • 1 <= k <= n!

접근 방법

-순열 문제

코드 구현

import java.util.*;
class Solution {
    public String getPermutation(int n, int k) {
        String answer="";
        List<List<String>> permutations = new ArrayList<>();
        boolean[] visited = new boolean[n];
        String[] arr = new String[n];
        for(int i=1;i<=n;i++){
            arr[i-1] = String.valueOf(i);
        }
        backtrack(permutations,new ArrayList<>(),visited,n,arr);
        for(String v:permutations.get(k-1)){
            answer+=v;
        }
        return answer;
    }
    public void backtrack(List<List<String>> permutations,List<String> curr,boolean[] visited,int n,String[] arr){
        //base case
        if(curr.size() == n){
            permutations.add(new ArrayList<>(curr));
            return;
        }

        //recursive
        for(int i=0;i<n;i++){
            if(curr.contains(arr[i])) continue;
            curr.add(arr[i]);
            visited[i]=true;
            backtrack(permutations,curr,visited,n,arr);
            curr.remove(curr.size()-1);
            visited[i]=false;
        }
    }
}

배우게 된 점

-결과값에 아무것도 안나올 시, 재귀 호출 매개변수를 잘 주었는지 확인해보자.

 

 

 

반응형

'alorithm > programmers' 카테고리의 다른 글

[프로그래머스] N-Queen  (0) 2024.08.13
[LeetCode] word search  (0) 2024.08.13
[LeetCode] Permutations  (0) 2024.08.13
[LeetCode] Combinations  (0) 2024.08.13
[LeetCode] Subsets  (0) 2024.08.13