티스토리 뷰

코딩테스트 진행하다가 순열사용할 때 재활용할 수 있을 것같아서 올려 둔당.

 

문자열에서 각 문자 별로 모든 경우의 수를 구하다가 사용하게 된 순열 알고리즘

중복 제거를 위해 HashSet을 사용했다.

 

String s = "aab" 이면

aab, aba, baa 가 나온다.

import java.util.*;

class Solution {
    // 문자열로 만들 수 있는 모든 경우의 수 (중복x)
    public HashSet<String> allSet;
    
    public void solution(String s) {
        allSet = new HashSet<>();
        permutation("", s);
    }
    
    // 모든 경우의 수를 구하는 순열
    public void permutation(String prefix, String s) {
        int n = s.length();
        if(n==0)
            allSet.add(prefix); // all에 삽입
        else {
            for(int i=0; i<n; i++) {
                permutation(prefix + s.charAt(i),
                                s.substring(0, i) + s.substring(i+1));
            }
        }
    }
}

 

'프로그래밍 > 알고리즘' 카테고리의 다른 글

C 가위바위보 게임  (0) 2019.08.20
Python 숫자 야구 게임  (1) 2019.07.29
C 다이아몬드 ver.2  (0) 2019.07.24
C# 로또번호  (2) 2019.06.20
C# 다이아몬드  (5) 2019.06.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday