반응형
var answer;
function solution(begin, target, words) {
answer = 987654321;
var len = words.length;
var Edge = Array(len);
var map = new Map();
var targetNum;
for(let i=0; i<len; i++) {
map.set(words[i],i);
}
for(let i=0; i<len; i++) {
Edge[i] = [];
if(target === words[i])
targetNum = i;
}
for(let i=0; i<len-1; i++){
for(let j=i+1; j<len;j++){
if(diffCount(words[i],words[j]) === 1){
let a = map.get(words[i]);
let b = map.get(words[j]);
Edge[a].push(b);
Edge[b].push(a);
}
}
}
var visit = Array(len);
for(let i=0; i<len; i++){
if(diffCount(begin, words[i]) === 1){
visit[i] = true;
DFS(Edge, visit, i, targetNum, 1);
visit[i] = false;
}
}
if(answer === 987654321)
return 0;
return answer;
}
function DFS(Edge, visit, cur, target, count) {
if(cur === target) {
answer = Math.min(answer, count);
return;
}
let len = Edge[cur].length;
for(let i=0;i<len;i++){
let next = Edge[cur][i];
if(visit[next])
continue;
visit[next] = true;
DFS(Edge, visit, next, target, count+1);
visit[next] = false;
}
}
function diffCount(a, b) {
let len = a.length;
let count = 0;
for(let i = 0; i< len; i++){
if(a.charAt(i) !== b.charAt(i)){
count++;
}
}
return count;
}
반응형
'ProgramSoliving' 카테고리의 다른 글
프로그래머스 : 트리 트리오 중간값 javascript (0) | 2021.06.26 |
---|---|
프로그래머스 : 줄서는방법 JavaScript (0) | 2021.06.24 |
프로그래머스 : N으로 표현 JavaScript (0) | 2021.06.22 |
프로그래머스 : 메뉴 리뉴얼 (0) | 2021.06.14 |
백준 : 8972 (0) | 2021.04.23 |