
-Code
import java.io.*;
import java.util.*;
public class BOJ1759 {
static char[] vowels = {'a', 'e', 'i', 'o', 'u'};
static char[] chars;
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int len = Integer.parseInt(st.nextToken());
int cnt = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
chars = new char[cnt];
for (int i = 0; i < cnt; i++) {
chars[i] = st.nextToken().charAt(0);
}
Arrays.sort(chars);
DFS(0, len, new StringBuilder());
}
private static void DFS(int start, int len, StringBuilder sb) {
// 길이가 주어진 값과 같고 조건에 맞으면 값 출력
if (sb.length() == len) {
if (isOk(sb)) {
System.out.println(sb);
}
return;
}
for (int i = start; i < chars.length; i++) {
sb.append(chars[i]);
DFS(i + 1, len, sb);
sb.deleteCharAt(sb.length() - 1);
}
}
// 모듬 1개 이상 자음 2개 이상인지 확인
private static boolean isOk(StringBuilder sb) {
int vowelCnt = 0;
for (char vowel : vowels) {
for (char ch : sb.toString().toCharArray()) {
vowelCnt += vowel == ch ? 1 : 0;
}
}
return (vowelCnt >= 1) && (sb.length() - vowelCnt >= 2);
}
}
로직의 큰 틀은 맞았으나 조건 계산을 못 봐서 빼먹은 부분과 다음 단어 체크에 넘어갈 때, i + 1로 넘겨야 하는데 start +1로 잘못 넘기는 실수를 해서 이 두 부분을 고쳐서 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 28682번 재우야 임관하자 (0) | 2026.01.27 |
|---|---|
| [백준/Java] 6986번 절사평균 (0) | 2026.01.26 |
| [백준/Java] 9205번 맥주 마시면서 걸어가기 (0) | 2026.01.26 |
| [백준/Java] 14584번 암호 해독 (0) | 2026.01.26 |
| [백준/Java] 2644번 촌수계산 (0) | 2026.01.25 |