https://programmers.co.kr/learn/courses/30/lessons/43163
class Solution {
static boolean[] visited;
static int answer = 0;
public int solution(String begin, String target, String[] words) {
visited = new boolean[words.length];
dfs(begin, target, words, 0);
return answer;
}
public static void dfs(String begin, String target, String[] words, int cnt) {
if (begin.equals(target)) {
answer = cnt;
return;
}
for (int i = 0; i < words.length; i++) {
if (visited[i]) {
continue;
}
int k = 0; // 같은 스펠링 몇개인지 세기
for (int j = 0; j < begin.length(); j++) {
if (begin.charAt(j) == words[i].charAt(j)) {
k++;
}
}
if (k == begin.length() - 1) { // 한글자 빼고 모두 같은 경우
visited[i] = true;
dfs(words[i], target, words, cnt + 1);
visited[i] = false;
}
}
}
}
알고리즘을 보면 다음과 같다.
visited = true
로 설정해 준다.visited = false
로 재설정한다.
궁금한게 저렇게 하면 리턴이 결국 여러개 되던데, 리턴값 중에 최소값만 빼야되는거 아닌가요?
테스트는 통과하긴 하던데,,, 테스트케이스가 부족한가 싶고 햇갈리네요