forked from GreatAlgorithm-Study/AlgorithmStudy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSB_43163.java
More file actions
35 lines (31 loc) · 1.12 KB
/
SB_43163.java
File metadata and controls
35 lines (31 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Arrays;
class SB_43163 {
static int ans = Integer.MAX_VALUE;
private static boolean canChange(String cur, String nxt) { // 한글자만 다르기
int dif = 0;
for (int i = 0; i < cur.length(); i++) {
if (cur.charAt(i)!=nxt.charAt(i)) dif++;
if (dif >1) return false;
}
return dif==1;
}
private static void dfs(String cur, String target, String[] words, boolean[] visited, int cnt) {
if (cur.equals(target)) {
ans = Math.min(ans, cnt);
return;
}
for (int i = 0; i < words.length; i++) {
if (!visited[i] && canChange(cur, words[i])){
visited[i] = true;
dfs(words[i], target, words, visited, cnt+1);
visited[i] = false;
}
}
}
public static int solution(String begin, String target, String[] words) {
if (!Arrays.asList(words).contains(target)) return 0;
boolean[] visited = new boolean[words.length];
dfs(begin, target, words, visited, 0);
return ans == Integer.MAX_VALUE ? 0 : ans;
}
}