being에서 target으로 값이 변할때까지 가장 짧게 변화된 단계의 숫자를 리턴하면 된다
private static void dfs(int begin, int target, String[] words, int depth) {
if (begin.equlas(target)) {
answer = Math.min(depth, answer);
return;
}
int diff = 0;
for (int i = 0; i < words.length; i++) {
if (check[i]) continue;
String s = words[i];
// words배열과 begin을 비교하여 다른 문자가 몇개 인지 찾는다
int diff = 0;
for (int j = 0; j < s.length; j++) {
if (begin.charAt(i) != s.charAt(i)) {
diff++;
}
}
// 한번에 한개씩 변환만 가능하다
if (diff == 1) {
check[i] = true;
// s로 문자가 변경되어 다음에 변경할 수 있다
dfs(s, target, words, depth + 1);
check[i] = false;
}
}
}