티스토리 뷰
코딩테스트 진행하다가 순열사용할 때 재활용할 수 있을 것같아서 올려 둔당.
문자열에서 각 문자 별로 모든 경우의 수를 구하다가 사용하게 된 순열 알고리즘
중복 제거를 위해 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