[프로그래머스#JS] 단어 변환

dongwon·2021년 2월 14일
0

문제

https://programmers.co.kr/learn/courses/30/lessons/43163

해결

  1. targetwords에 없으면 바로 return 0.
  2. 다음 단어로 가는 로직 구현.
  • 처음에 beginword가 같은 게 길이 -1 개 있으면 넘어가도록 구현. 이때 hit -> htk 도 가능하게 됩니다.
  const len = word.filter((el) => start.includes(el)).length;
  • 문자열의 인덱스 하나하나 같은 지 체크. 길이 -1 이면 다음 단어로 DFS
  1. targetword가 같을 때 시도 횟수를 answer 배열에 모두 저장 후 최솟값 return

TC 3번 오류 이유

  1. targetwords에 있는지 체크했는지?
  2. 다음 단어로 넘어가는 로직 제대로 구현했는지?

코드

function solution(begin, target, words) {
  if (words.indexOf(target) === -1) return 0;

  let isUsed = new Array(words.length).fill(false);
  begin = begin.split('');
  target = target.split('');
  words = words.map((word) => word.split(''));

  let answer = [];

  function DFS(start, cnt) {
    if (JSON.stringify(start) === JSON.stringify(target)) {
      answer.push(cnt);
    }

    words.forEach((word, index) => {
      if (!isUsed[index]) {
        // const len = word.filter((el) => start.includes(el)).length;
        let len = word.filter((el, idx) => el === start[idx]).length;

        if (len === begin.length - 1) {
          isUsed[index] = true;
          DFS(word, cnt + 1);

          isUsed[index] = false;
        }
      }
    });
  }

  DFS(begin, 0);

  return answer.length ? Math.min(...answer) : 0;
}
profile
데이원컴퍼니 프론트엔드 개발자입니다.

0개의 댓글