ALGORITHM/PROGRAMMERS
[프로그래머스] 단어 변환
0298
2021. 8. 11. 09:48
https://programmers.co.kr/learn/courses/30/lessons/43163
코딩테스트 연습 - 단어 변환
두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수
programmers.co.kr
2021-08-11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.util.*;
class Solution {
public int solution(String begin, String target, String[] words) {
if(!Arrays.asList(words).contains(target)) return 0;
int answer = 0;
Queue<String> q = new LinkedList<>();
boolean[] vtd = new boolean[words.length];
q.add(begin);
loop:while(!q.isEmpty()) {
int size = q.size();
while(size > 0) {
String tmp = q.poll();
if(tmp.equals(target)) break loop;
for(int i = 0; i < words.length; i++) {
int count = 0;
if(!vtd[i]) {
for(int k = 0; k < words[i].length(); k++) {
if(tmp.charAt(k) != words[i].charAt(k)) {
count++;
}
}
if(count == 1) {
q.add(words[i]);
vtd[i] = true;
}
}
}
size--;
}
answer++;
}
return answer;
}
}
|
cs |
#문제풀이
words 길이가 길지 않아서 bfs 돌려서 하나하나 체크했다.