csct3434
[level 3] 단어 변환 - 43163 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(String begin, String target, String[] words) {
int n = words.length;
int targetIdx = -1;
int[][] diff = new int[n][n];
for (int i = 0; i < n; i++) {
if (words[i].equals(target)) {
targetIdx = i;
}
for (int j = i + 1; j < n; j++) {
diff[i][j] = diff[j][i] = countDiff(words[i], words[j]);
}
}
Queue<int[]> queue = new LinkedList<>();
boolean[] visited = new boolean[n];
for (int i = 0; i < n; i++) {
if (countDiff(begin, words[i]) == 1) {
visited[i] = true;
queue.add(new int[]{i, 1});
}
}
while (!queue.isEmpty()) {
int[] info = queue.poll();
int wordIdx = info[0];
int count = info[1];
if (wordIdx == targetIdx) {
return count;
}
for (int i = 0; i < n; i++) {
if (!visited[i] && diff[wordIdx][i] == 1) {
queue.add(new int[]{i, count + 1});
visited[i] = true;
}
}
}
return 0;
}
private int countDiff(String w1, String w2) {
int diff = 0;
char[] wc1 = w1.toCharArray();
char[] wc2 = w2.toCharArray();
for (int i = 0; i < wc1.length; i++) {
if (wc1[i] != wc2[i]) {
diff++;
}
}
return diff;
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] 숫자 변환하기 - 154538 (0) | 2024.03.17 |
---|---|
[level 3] 네트워크 - 43162 (0) | 2024.03.17 |
[level 3] 단속카메라 - 42884 (0) | 2024.03.17 |
[level 3] 섬 연결하기 - 42861 (0) | 2024.03.17 |
[level 3] 이중우선순위큐 - 42628 (0) | 2024.03.17 |