본문 바로가기
ComputerScience/알고리즘, 프로그래머스

[Lv.0] 외계어 사전

by VictorMeredith 2023. 1. 30.

1. 문제

2. 전략

  1) 일단 spell의 전체길이와 dic의 글자수가 다른 요소는 어차피 발음 못하므로 삭제한다.

  2) dic의 각 글자에서 spell의 글자들과 비교하여 일치하는 경우 '' 으로 replace 시킨다.

      (중복된 원소가 없으므로 한번만 검사하면 된다)

  3) 작업된 배열 중에서 글자가 모두 교체되어 ''가 된 요소가 1개 이상일 경우 spell의 알파벳을 한번만 사용한 단어가 dic에 존재하므로 answer =1 이다.

function solution(spell, dic) {
    var answer = 2;

    let newDic = []; 
    //중복되지 않으며, spell의 원소 모두를 사용해야하므로 dic의 요소 중에서 spell의 전체의 길이와
    //같은 요소만을 필터해서 newDic에 모아준다.
    for(let i =0; i<dic.length; i++){
        if(dic[i].length === spell.length){
            newDic.push(dic[i])
        }
    }
    
    for(let j =0; j<spell.length; j++){
        for(let k=0; k<newDic.length; k++){
        	//spell배열과 newDic 배열을 모두 순회
            if(newDic[k].includes(spell[j])){ // newDic요소의 글자 중 spell의 글자가 포함되어있는 경우
                newDic[k] = newDic[k].replace(spell[j], '') // 없애버린다
            }
        }
    }
    
    if(newDic.includes('')){ // 빈 글자가 있다면 spell의 글자와 모두 일치한 문자가 존재하므로 answer = 1
        answer = 1
    }
    
    
    return answer;
}

3. 알아야할 사항

  - 배열/객체의 수정 전략을 적어놓고 시작한다.

댓글