diff --git a/programmers/단어 변환/solution.java b/programmers/단어 변환/solution.java new file mode 100644 index 0000000..b38312b --- /dev/null +++ b/programmers/단어 변환/solution.java @@ -0,0 +1,36 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/43163 + +class Solution { + static String tg; + static int tt; + public int solution(String begin, String target, String[] words) { + tt = 0; + tg = target; + boolean[] visit = new boolean[words.length]; + dfs(begin, words, 0, visit); + return tt; + } + private void dfs(String from, String[] words, int depth, boolean[] visit){ + int pos = 0; + if(!from.equals(tg)){ + for(String word : words){ + if(!visit[pos] && !from.equals(word) && diffCheck(from,word)) { + visit[pos] = true; + dfs(word, words, depth+1, visit); + visit[pos] = false; + } + pos++; + } + } else{ + if(tt==0 || tt>depth) tt = depth; + } + } + private boolean diffCheck(String first, String second){ + int len = first.length(), cnt = 0; + for(int a = 0; a < len; a++){ + if(first.charAt(a)!= second.charAt(a)) cnt ++; + if(cnt > 1) break; + } + return cnt == 1; + } +} \ No newline at end of file