Header

[ 코딩테스트 JS ] 자바스크립트 코테 04 ( JavaScript )

JavaScript 자바스크립트 코딩테스트 04


자주 다루는 코딩테스트 문제를 가져왔습니다.



#146. WordBreak2


문제 설명비어있지 않은 string s 비어 있지 않은 단어 list 포함하는 wordDict 존재한다.
String s 공간을 줘서 문장을 형성하고 단어는 wordDict안에 들어있는 값들이다.
모든 가능한 문장들을 return해라.

조건)  같은 단어를 여러 재사용 가능하다. (Segmentation: 분할)

 

 



코드풀이) JavaScript



/**



 * @param {string} s



 * @param {string[]} wordDict



 * @return {string[]}



 */



var wordBreak = function (swordDictcache = new Map()) {



  if (cache.has(s))



    return cache.get(s);



  if (s.length === 0) {



    cache.set(s, []);



    return [];



  }



  const result = [];



  for (let word of wordDict) {



    const index = s.indexOf(word);



    if (index === 0) {



      const newStr = s.slice(word.length);



      const values = wordBreak(newStrwordDictcache);



      if (values.length === 0 && newStr.length === 0)



        result.push(word);



      else {



        values.forEach(val => {



          result.push(word + ' ' + val);



        });



      }



    }



  }



  cache.set(sresult);



  return result;



}






[문제풀때 필요한 JavaScript 표준 내장 객체인 String prototype method]




var s = 'testcodeboogie'



console.log(s.slice(4))



console.log(s.indexOf('stc'))



console.log(s.indexOf('stc2'))



console.log(s.substring(04))





 

결과(output)

codeboogie

2

-1

test




알고리즘)

전형적인 Dynamic Programming 문제로

indexOf 값이 0  값을 찾을때까지 for문을 돌린다.

제일 처음에 시작하는 해당문자열에서 부터 시작하여 찾으면

Slice 통해 해당 단어를 문자열에서 지우고  이후부터 다시 함수를 출력한다.

댓글 쓰기

0 댓글