https://www.acmicpc.net/problem/1759
접근 :
- 주어진 알파벳 C 개중 L 개 뽑기 (중복허용 X)
- 순서는 알파벳 오름차순
- L개를 모두 다 뽑은 후, 모음이 1개 자음이 2개 이상되는 것만 정답으로 출력
코드구현 :
import java.io.*;
import java.util.Arrays;
public class Main {
private static int l;
private static int c;
private static char[] char_list;
private static StringBuilder sb;
private static char[] vowel = {'a', 'e', 'i', 'o', 'u'};
static void input() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] inputs = br.readLine().split(" ");
l = Integer.parseInt(inputs[0]);
c = Integer.parseInt(inputs[1]);
char_list = new char[c];
sb = new StringBuilder();
String temp = br.readLine();
for(int i = 0 ; i < 2*c ; i = i+2) char_list[i/2] = temp.charAt(i);
br.close();
}
static boolean isAvailable(StringBuilder temp_str){
int vowel_num = 0;
for(char v : vowel) vowel_num = (temp_str.indexOf(String.valueOf(v)) == -1) ? vowel_num : vowel_num + 1;
return vowel_num >= 1 && (l - vowel_num) >= 2;
}
static void recFunc(int now, StringBuilder temp_str){
if(temp_str.length() == l) {
if(isAvailable(temp_str)) sb.append(temp_str).append('\n');
return;
}
for(int i = now ; i < c ; i++){
temp_str.append(char_list[i]);
recFunc(i + 1, temp_str);
temp_str.deleteCharAt(temp_str.length()-1);
}
}
public static void main(String[] args) throws IOException{
StringBuilder temp_str = new StringBuilder();
input();
Arrays.sort(char_list);
recFunc(0, temp_str);
System.out.println(sb.toString());
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 프로그래머스 kakao 키패드 누르기 (0) | 2024.05.23 |
---|---|
[JAVA] 백준 1138 한 줄로 서기 (0) | 2024.05.20 |
[JAVA] 백준 1182 부분수열의 합_브루트포스 (0) | 2024.05.18 |
[JAVA] 백준 14888 연산자 끼워넣기_브루트포스 (0) | 2024.05.18 |
[JAVA] 백준 4673 셀프 넘버_브루트포스 (0) | 2024.02.04 |