js 프로그래머스) 외계어 사전

이명진·2023년 1월 30일
0

코드카타

목록 보기
58/69

문제 요약

알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.

처음에 그냥 split으로 문제를 풀려고 했는데 중복되는 것들도 다 제거해버려서 문제의 답을 도출해낼수 없었다.

문제 풀이

처음 풀었을때 위에서 말했듯이 split으로 문자들을 제거하고 빈배열일때 1을 리턴하도록 풀었는데 답이 아니었다.

두번째 풀이

function solution(spell, dic) {
    var answer = 2;
    const cnt = spell.length;
    dic.map(x=>{
      let arr = x.split('')
      let copySpell = new Array(...spell)
      for(let i=0; i<cnt;i++){
        let target = copySpell.pop();
        let check = arr.includes(target)
        if(!check){
           
          
          copySpell.push(target);
          break;
        }
      }
      if(!copySpell.length){
        return answer =1;
      }
    })
    return answer;
    }

하나씩 큐 스택을 생각해내어서 문제를 풀었다. 하나씩 뺀다음에 includes로 있다면 넘어가고 없을때 다시 큐에 넗어주듯이 문제를 풀었고 빈배열일때 1을 리턴해주었다.

다른 사람의 풀이를 보고 some과 every에 대해서 다시 상기시킬수 있었다.

세번째 풀이

function solution(spell, dic) {
    var answer = 2;
    dic.map(x=>{
     let check = spell.every(t=>x.includes(t))
      if(check){
        return answer =1;
      }
    })
    return answer;
}

every를 사용해서 문제를 풀었다. 훨씬 간결하고 성능도 좋아졌다.
every가 모두의 조건이 만족될때 불리언 값을 리턴한다는 것을 활용할수 있었다.

다시 상기시킬수 있어서 문제 풀이할때 그냥 큐 스택을 해야 한다. 라는 생각을 벗을수 있었다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글