1. ๋ฌธ์ : https://www.acmicpc.net/problem/1062
2. ํ์ด
์์ ํ์ (๋ฐฑํธ๋ํน) ๋ฌธ์ ์์ ์์์ง๋ง ๊ตฌํ์ด ์ด๋ ค์ ๋ค.
ํ์ ๋์์ด ๋์์๋ ๋จ์ด๊ฐ ์๋๋ผ ๋ชจ๋ ์ํ๋ฒณ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ์ข ๋ ์ง์ ์ด ์์์ ์๋..
for๋ฌธ์ ๋๋ฉฐ dfs๋ฅผ ์ฌ๊ท๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์ค์ํ๋ค. (์ด๋ ๊ฒ๋๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ๋ฐ์ง ์ ์๋ค.)
์ฃผ์ด์ง K๋งํผ ์ํ๋ฒณ์ ๋ค ๋ฐฉ๋ฌธํ๋ฉด (count == K)
๋จ์ด๋ฅผ ํ๋์ฉ ๋๋ฉด์ ๊ฐ ๋จ์ด์ ์ฒ ์๊ฐ visted ํ์๊ฐ ๋ ์ํ๋ฒณ์ธ์ง ํ์ธํ๋ค.
๋ง์ฝ ๋ค ๋ฐฉ๋ฌธ๋ ์ฒ ์๋ผ๋ฉด rs๊ฐ์ ์ฌ๋ ค์ฃผ๊ณ
์ต๋๊ฐ๊ณผ ๋น๊ตํด์ฃผ๋ฉด์ max value๋ฅผ ์ ๋ฐ์ดํธ!
3. ์ฝ๋
import java.util.*;
class Main {
static int N,K;
static int max = 0;
static boolean visit[] = new boolean[26];
static String[] arr;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
N = scanner.nextInt();
K = scanner.nextInt();
arr = new String[N];
if(K<5) {
System.out.println(0);
return;
}else if(K==26) {
System.out.println(N);
return;
}else {
for (int i = 0; i < N; i++) {
String str = scanner.next();
arr[i] = str.substring(4, str.length() - 4);
}
K -= 5;
visit['a' - 97] = true;
visit['n' - 97] = true;
visit['t' - 97] = true;
visit['i' - 97] = true;
visit['c' - 97] = true;
dfs(0, 0);
System.out.println(max);
}
}
private static void dfs(int start, int count) {
if(count == K) {
int rs = 0;
for(int i=0; i<N; i++) {
boolean isTrue = true;
for(int j=0; j<arr[i].length(); j++) {
if(!visit[arr[i].charAt(j)-97]) {
isTrue = false;
break;
}
}
if(isTrue) {
rs++;
}
}
max = Math.max(max, rs);
return;
}
for(int i=start; i<26; i++) {
if(!visit[i]) {
visit[i]=true;
dfs(i, count+1);
visit[i]=false;
}
}
}
}
'๐ป Coding Problems Solving > DFS | BFS | Backtracking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ 1743] ์์๋ฌผ ํผํ๊ธฐ (java) (0) | 2023.04.11 |
---|---|
[BOJ 2178] ๋ฏธ๋ก ํ์ (java) (0) | 2023.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ(java) (0) | 2023.03.31 |
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ํ๋ ์ฆ4๋ธ๋ก (0) | 2023.03.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ํผ๋ก๋ (์๋ฐ java) (0) | 2023.03.01 |
์ต๊ทผ๋๊ธ