
문제 해석
- 저번에 프로그래머스에서 푼 문제여서 금방풀었다.
- startGene 에서 하나만 다른 글자만 이동할수 있다.
- 하나만 다른 글자는 bank 에 들어있다.
- bfs 으로 풀면되겠다. 싶었다.
나의 풀이
/**
* @param {string} startGene
* @param {string} endGene
* @param {string[]} bank
* @return {number}
*/
var minMutation = function(startGene, endGene, bank) {
// 예전에 한번 풀어본 bfs 문제라고 생각
function check_is_one (arr1,arr2){
let check_count=0
for(var i=0; i<arr1.length; i++){
//어쩌피 전체다 확인해야되니까
if(arr1[i]!=arr2[i]) check_count+=1;
}
return check_count==1 ?true: false;
}
let queue=[[startGene,0]]
while(queue.length>0){
let [first,count]= queue.shift()
if(first==endGene){
return count;
}
for(var i=0; i<bank.length; i++){
if(bank[i]!=0 && check_is_one(first,bank[i]) ){
// 인경우에만 queue 에 넣는 bfs
queue.push([bank[i],count+1])
bank[i]=0;
}
}
}
return -1;
};