๐พ ์๊ณ ๋ฆฌ์ฆ
- ์กฐํฉ๋ก ๊ณผ ๋ฐฑํธ๋ํน์ ์ ์ ํ ํฉ์ณ ์๊ฐํ๋ฉด ํ๋ฆฌ๋๋ฌธ์ ๋ค.
๐พ ์๊ฐ ํฌ์ธํธ
- ์ถ๋ ฅํ์์ด ์๋ชป๋์๋ค๋ ์ค๋ฅ๋๋ฌธ์ ํ์ฐธ์ ๊ณ ๋ฏผํ๋ค. ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋์ ๋๋ถ์ ํด๊ฒฐ์๋ฃ!!
- ์๋๋ printํจ์๋ฅผ ์๋์ ๊ฐ์ด ์์ฑํ์๋ค.
private static void print(String[] arr, boolean[] visited) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (visited[i] && check(arr, visited)) {
result.append(arr[i]);
}
}
result.append("\n");
System.out.print(result);
}
์ด๋ ๊ฒ ์์ฑํ๋ฉด, ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค๋๋ฉด์ ์กฐ๊ฑด์ ๋ง์ง ์๋ ๊ฒฝ์ฐ๋ ์ถ๋ ฅ์ ํ์ง ์๊ณ , ์ค๋ฐ๊ฟ๋ง ํ๋ค. ๊ทธ๋์ ์์2๊ฐ ์ด์, ๋ชจ์ 1๊ฐ์ด์์ด ์์ด์ผ ํ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ๋ชปํ๋ฉด ๊ณต๋ฐฑ์ด ์๊ธฐ๊ณ ์ด๋ก ์ธํด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ใ ใ
๊ทธ๋์ ์๋ ์์ค์ฝ๋์ ๊ฐ์ด ์กฐ๊ฑด์ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด return ์ํค๊ธฐ! ์ด ๋ํ ๋ฐฑํธ๋ํน์ ์๋ฆฌ๋ฅผ ํ์ฉํด ์ถ๋ ฅํ๋ ๊ฑฐ์๋ ๊ฒ์ด๋ค........ ์ด์ฌํ ์๊ฐํด์ผ๊ฒ ๋ค.
๐พ ์์ค์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main_1759 {
static int L;
static int C;
public static void main(String[] args) throws NumberFormatException, 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());
String[] arr = new String[C];
boolean[] visited;
for (int i = 0; i < C; i++) {
arr[i] = st.nextToken();
}
Arrays.sort(arr);
// 6๊ฐ์ค์ 4๊ฐ๋ฝ๊ธฐ
combination(arr, new boolean[C], 0, 0, L);
}
private static void combination(String[] arr, boolean[] visited, int start, int depth, int r) {
// ๊ธฐ์ ์กฐ๊ฑด
if (depth == L) {
print(arr, visited);
return;
}
// ์ฌ๊ท์กฐ๊ฑด
for (int i = start; i < arr.length; i++) {
if (!visited[i]) {
visited[i] = true;
combination(arr, visited, i + 1, depth + 1, r);
visited[i] = false;
}
}
}
private static void print(String[] arr, boolean[] visited) {
StringBuilder result = new StringBuilder();
if (check(arr, visited)) {
//check ํจ์๊ฐ true : ์์๋ชจ์๊ฐ์ ์ถฉ์กฑ๋๋ฉด ์ถ๋ ฅ
for (int i = 0; i < visited.length; i++) {
if (visited[i]) {
result.append(arr[i]);
}
}
} else {
//์์๋ชจ์๊ฐ์๊ฐ ์ถฉ์กฑ๋์ง ๋ชปํ๋ฉด ์ถ๋ ฅ ๋ถ๊ฐ๋ฅ
//์์ ์กฐ๊ฑด์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋ฆฌํด์ํค๊ธฐ..!
return;
}
result.append("\n");
System.out.print(result);
}
private static boolean check(String[] arr, boolean[] visited) {
int cnt = 0;
int cnt2 = 0;
for (int i = 0; i < arr.length; i++) {
if (visited[i]) {
if (arr[i].contains("a") || arr[i].contains("i") || arr[i].contains("e") || arr[i].contains("u")
|| arr[i].contains("o")) {
cnt++;
}else {
cnt2++;
}
}
}
if (cnt >= 1 && cnt2>=2) {
return true;
}
return false;
}
}
๐ต๐ซ ๊ณต๋ถํด์ผ ํ ์
- ์ง๋ํ๊ฒ ์๊ฐํ๊ธฐ..
- ์๋๋ฉด ๋๊น์ง ์ก๊ณ ํด๊ฒฐํ๊ธฐ,,
- ๋ฐ๋ก ๋ฌผ์ด๋ณด์ง ์๊ธฐ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ_1647] ๋์ ๋ถํ ๊ณํ (๊ณจ๋ 4) - JAVA (0) | 2023.12.10 |
---|---|
[BOJ_6497]์ ๋ ฅ๋ (๊ณจ๋ 4) - JAVA (1) | 2023.12.08 |
[BOJ_1182]๋ถ๋ถ์์ด์ ํฉ (์ค๋ฒ 2) - JAVA (3) | 2023.11.30 |
[BOJ_14500] ํ ํธ๋ก๋ฏธ๋ ธ (๊ณจ๋ 4) - JAVA (1) | 2023.11.02 |
[BOJ_16953] A->B (์ค๋ฒ 1) - JAVA (3) | 2023.10.20 |