From 552f1cf9ab06839e9aee37d70bf9370e2f161bd0 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Mon, 23 Jan 2023 14:43:17 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202023.=201.=2023.=20=EC=98=A4?= =?UTF-8?q?=ED=9B=84=202:43:16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/단어 변환/solution.java | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 programmers/단어 변환/solution.java 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