-
[다시풀기/단어변환]코딩테스트 2023. 6. 5. 22:16
function solution(begin, target, words) { let obj = {}; words.push(begin) //words에서 한단어만 다른 것을 찾음. 이걸 DFS든 BFS든 반복하다가 (DFS가 맞을듯) target이 나오면 멈춤. //최소 -> 최단거리 BFS..??? for(let i=0;i<words.length;i++){ obj[words[i]]=[]; for(let j=0;j<words.length;j++){ for(let k=0;k<words[i].length;k++){ let newWords1 = words[i].slice(0,k)+words[i].slice(k+1) let newWords2 = words[j].slice(0,k)+words[j].slice(k+1) if(i!==j&&newWords1===newWords2){ obj[words[i]].push(words[j]) } } } } function bfs(){ const visited = {} const queue = [[begin,0]] while(queue.length){ const [node,count] = queue.shift(); if(node===target) return count; visited[node] = true; obj[node].forEach((el)=>{ if(!visited[el]){ queue.push([el,count+1]) } }) } } let answer = bfs() return answer?answer:0; }
무려 포문을 세개를 써서 연결그래프 obj를 만들었다. 그 이후 bfs를 이용해 최단거리를 구해줬는데 최단거리 구하는것에 있어서 정말 많이 애를 먹었다..ㅠㅠ
'코딩테스트' 카테고리의 다른 글
[예외처리못함/프로그래머스] 베스트앨범 (0) 2023.06.07 [못풀었다/프로그래머스] 단속카메라 (0) 2023.06.06 [프로그래머스] 최고의 집합 (0) 2023.06.04 [힙이용해서 풀어보기/프로그래머스] 이중우선순위큐 (0) 2023.06.04 [못풀었다/꼭다시풀기/프로그래머스] 가장 큰 정사각형찾기 (0) 2023.06.04