반응형
package excirsize;
import java.util.LinkedList;
import java.util.Queue;
public class 단어변환 {
public int solution(String begin, String target, String[] words) {
int answer = BFS(begin, target, words);
return answer;
}
private int BFS(String begin, String target, String[] words) {
int time = 0;
Queue<String> q = new LinkedList<String>();
q.add(begin);
boolean visit[] = new boolean[words.length];
while (!q.isEmpty()) {
int size = q.size();
for (int s = 0; s < size; s++) {
String cur = q.poll();
if (target.contentEquals(cur)) {
return time;
}
for (int i = 0; i < words.length; i++) {
if (visit[i])
continue;
if (compStr(cur, words[i])) {
visit[i] = true;
q.add(words[i]);
}
}
}
++time;
}
return 0;
}
/*
* 단어가 하나 다른가 하나가 다름 : true 아니면 : false
*/
static public boolean compStr(String str1, String str2) {
if (str1.length() != str2.length())
return false;
int cnt = 0;
for (int i = 0; i < str1.length() && cnt < 2; i++) {
if (str1.charAt(i) != str2.charAt(i)) {
cnt++;
}
}
if (cnt == 2)
return false;
return true;
}
}
반응형
'ProgramSoliving' 카테고리의 다른 글
백준 : 1519 (1) | 2020.09.15 |
---|---|
프로그래머스 : 여행경로 (0) | 2020.09.12 |
프로그래머스 : 네트워크 (0) | 2020.09.11 |
프로그래머스 : 타겟 넘버 (0) | 2020.09.11 |
프로그래머스 : 방금그곡 (0) | 2020.07.25 |