단어 변환

LJM·2023년 8월 18일
0

programmers

목록 보기
68/92

https://school.programmers.co.kr/learn/courses/30/lessons/43163

import java.util.*;

class Solution {
    
    public int answer = 10000000;
    
    public int solution(String begin, String target, String[] words) {
        boolean[] visit = new boolean[words.length];
        
        boolean exist = false;
        for(int i = 0; i < words.length; ++i)
        {
            if(target.equals(words[i]))
                exist = true;
        }
        if(false == exist)
            return 0;
        
        dfs(0, begin, target, words, visit);
        
        return answer;
    }
    
    public void dfs(int depth, String begin, String target, String[] words, boolean[] visit)
    {
        if(begin.equals(target))
        {
            answer = Math.min(answer, depth);
            return;
        }
        
        for(int i = 0; i < words.length; ++i)
        {
            if(visit[i])
                continue;
            
            if(changeble(begin, words[i]))
            {
                visit[i] = true;
                dfs(depth+1, words[i], target, words, visit);
                visit[i] = false;
            }
        }
    }
    
    public boolean changeble(String a, String b)
    {
        int count = 0;
        for(int i = 0; i < a.length(); ++i)
        {
            if(a.charAt(i) != b.charAt(i))
            {
                count++;
            }
            if(count>1)
                break;
        }
        
        if(count > 1)
            return false;
        else
            return true;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글