import java.util.*;
class Solution {
public int solution(String begin, String target, String[] words) {
int answer = 0;
Queue<Data> que = new LinkedList<>();
boolean[] visited = new boolean[words.length];
for (int i = 0; i < words.length; i++) {
int diff = 0;
for (int j = 0; j < words[i].length(); j++) {
if (words[i].charAt(j) != begin.charAt(j)) {
diff++;
}
}
if (diff == 1) {
visited[i] = true;
que.add(new Data(i, 1));
}
}
while (!que.isEmpty()) {
Data data = que.poll();
if (words[data.i].equals(target)) {
answer = data.count;
break;
}
for (int i = 0; i < words.length; i++) {
if (!visited[i]) {
int diff = 0;
for (int j = 0; j < words[i].length(); j++) {
if (words[i].charAt(j) != words[data.i].charAt(j)) {
diff++;
}
}
if (diff == 1) {
visited[i] = true;
que.add(new Data(i, data.count + 1));
}
}
}
}
return answer;
}
}
class Data {
int i;
int count;
Data (int i, int count) {
this.i = i;
this.count = count;
}
}
단순한 BFS 문제였는데 계속 이상하게 생각해서 푸는데 오래걸렸다..
다음부턴 문제 분석을 잘해야겠다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges