duck blog
Published on

프로그래머스 단어변환 (bfs/dfs)

Authors
  • avatar
    Name
    Deokgoo Kim
    Twitter

문제 풀이

bfs/dfs 분류의 문제입니다. bfs로 풀었습니다.
난이도는 중간이라고 생각합니다.


문제 링크

function solution(begin, target, words) {
  let visited = new Array(words.length).fill(-1);
  let targetIndex = words.indexOf(target);
  let queue = [];
  if(targetIndex === -1) return 0;

  function bfs(queue) {
    while(queue.length) {
      const { word, level } = queue.shift();

      for(let i=0;i<words.length;i++) {
        let diff = 0;
        if(visited[i] !== -1 && visited[i]<=level) continue;
        for(let j = 0;j<word.length;j++) {
          if(words[i][j] !== word[j]) diff++;
          if(diff > 1) break;
        }
        if(diff === 1) {
          visited[i] = level + 1;
          if(words[i] === target) return;
          queue.push({word: words[i], level: level + 1});
        }
      }
    }
  }

  queue.push({word: begin, level: 0});

  bfs(queue);

  return visited[targetIndex]
}

새 글 알림 받기

실무에서 바로 써먹을 수 있는 개발 팁과 경험담을 받아보세요

#실무 개발 경험담#최신 기술 트렌드#성능 최적화 노하우#개발 팁과 인사이트

개인정보는 뉴스레터 발송 목적으로만 사용되며, 언제든 구독을 해지할 수 있습니다.