1759 암호만들기 - 골드 5
아이디어는 재귀전 캐릭터를 더한후 재귀후 돌아오면 맨끝에 더해줬던 캐릭터를 빼준다. (빼줘서 다음 조합의 캐릭터를 만들수 있어야한다.)
**추가로 출력에대한 자음 모음 기준이 있다.
https://www.acmicpc.net/problem/1759
1759번: 암호 만들기
첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.
www.acmicpc.net
import java.io.*;
import java.util.*;
public class Main {
static int l = 0;
static int c = 0;
static char []arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
l = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
arr = new char[c];
for(int i=0; i<c; i++){
arr[i] = st.nextToken().charAt(0); //string to char 확인필요
}
String ans = "";
Arrays.sort(arr); // 알파벳순으로 정렬
findAllpw(ans,0);
} // main method end
private static void findAllpw(String ans, int now){
if(ans.length()==l){
int count =0;
for(int j=0; j<l; j++){
if(ans.charAt(j)=='a'||ans.charAt(j)=='i'||ans.charAt(j)=='e'||ans.charAt(j)=='o'||ans.charAt(j)=='u'){
count++;
}
}
if(ans.length()- count>=2 &&count>=1){
System.out.println(ans);
}
//ans
return;
}
for(int i=now; i<c; i++){
ans += arr[i]+"";
findAllpw(ans,i+1);
ans = ans.substring(0,ans.length()-1);
}
}
}// class end
* str.substring(포함,불포함) 포함부터 ~ 불포함까지
str.substring(A) A부터 문자열 끝까지
** String to char : str.char(0); char 됨.
'알고리즘' 카테고리의 다른 글
D+11 백준 2661 좋은수열 (0) | 2021.10.27 |
---|---|
D+9 백준 14888 연산자 끼워넣기 (0) | 2021.10.15 |
D+8 백준 2581 소수 (0) | 2021.10.13 |
D+8 백준 1292 쉽게 푸는 문제 (0) | 2021.10.13 |
D+7 백준 1978 소수찾기 (0) | 2021.10.12 |