[알고리즘] 문자열 구분

N개의 문자열 속에서 문자열을 구분할 수 있는 최소 길이

입력 예제 |
["Seesue", "Seetue", " Seautw"]
출력 예제 |
3

이유 -> 모두 Se를 유지하다가 3번째에서 세 단어를 구별할 수 있게 된다.


  1. words[0]만큼 돌아주면서 (사실 가장 짧은 배열을 찾기 위해 sort를 진행해주어도 좋다.) new Map을 생성한다.
  2. map 에 substrinng(0,i+1); 만큼 잘라주면서 만약, map.has에 가지고 있지 않다면 flag 값을 변경해주어 break 문을 빠져나가게끔 해준다.

function solution(words) {

    let answer, i;
    for(i=0;i<words[0].length;i++){
        let sH=new Map();
        let flag=true;
        for(let j=0;j<words.length;j++){
            let sub=words[j].substring(0,i+1);
            if(sH.has(sub)){
                flag=false;
                break;
            }
            sH.set(sub,1);
        }
        if(flag)
            break;
    }
    answer=i+1;
    return answer;
  }

좋은 웹페이지 즐겨찾기