카테고리 없음

[Lv.3] 단어 변환-자바

시롱시롱 2023. 7. 5. 23:06
class Solution {
    static String[] wordArr;
    static boolean[] visited;
    static int minAns=Integer.MAX_VALUE;
    public int solution(String begin, String target, String[] words) {
        int answer = 0;
        wordArr =words.clone();
        visited=new boolean[words.length];

        dfs(begin,target,0);
        return minAns==Integer.MAX_VALUE?0:minAns;
    }

    private void dfs(String now, String target,int depth) {
        if(now.equals(target)){
            minAns=Math.min(minAns,depth);
            return;
        }
        if(depth>=minAns)
            return;
        for (int i = 0; i < wordArr.length; i++) {
            if(visited[i])
                continue;
            String word=wordArr[i];
            if(compareTarget(word,now)){
                //can jump
                visited[i]=true;
                dfs(word,target,depth+1);
                visited[i]=false;
            }
        }
    }

    private boolean compareTarget(String word, String now) {
        int falseCount=0;
        for (int i = 0; i < word.length(); i++) {
            if(word.charAt(i)!=now.charAt(i))
                falseCount++;
        }
        if(falseCount==1)
            return true;
        return false;
    }

}

무난한 dfs문제였다.