문제풀이
- 모든 경로 탐색을 위한 visit[] 생성
- words 내에 target 없으면 0 return
- begin과 한글자 차이면 반복하는 DFS 생성, 한글자씩 변화하는 begin과 target 같으면 탐색 Level return
코드
import java.util.*;
class Solution {
boolean[] visit;
ArrayList<String> arr;
int answer = 0;
public int solution(String begin, String target, String[] words) {
visit=new boolean[words.length];
arr= new ArrayList<>();
boolean check = false;
for(int i=0;i<words.length;i++){
if(target.equals(words[i])){
check=true;
}
}
if(!check)return 0;
DFS(begin, target, words, 0);
return answer;
}
void DFS(String begin, String target, String[] words, int L){
if(begin.equals(target)){
answer=L;
}else{
for(int i=0;i<words.length;i++){
int cnt=0;
for(int j=0;j<begin.length();j++){
if(begin.charAt(j)==words[i].charAt(j))cnt++;
}
if(cnt==begin.length()-1 && !visit[i]){
visit[i]=true;
DFS(words[i], target, words, L+1);
visit[i]=false;
}
}
}
}
}