function solution(spell, dic) {
const isThere = [];
dic.forEach((word) => {
let count = 0;
spell.forEach((item) => {
if(word.includes(item)){
count += 1;
}
})
if(count === spell.length){
isThere.push(word);
}
})
return isThere.length === 0 ? 2 : 1;
}
dic
배열의 원소 하나에 대하여 spell
을 검사한다.
만약, spell
의 원소가 포함되어 있다면 count
를 증가시킨다.
하나의 dic
배열 원소에 대한 연산이 끝날 때, count
가 spell
배열의 길이와 같다면
spell
내의 모든 원소가 존재한다는 것이므로, isThere
이라는 배열에 해당 dic
원소를 넣는다.
이런 단어가 하나라도 존재하면 1을 return
하므로 isThere
의 length
의 따라 return
을 바꾼다.
function solution(spell, dic) {
return dic.filter(v=>spell.every(c=>v.includes(c))).length ? 1 : 2;
}
filter()
와 every()
를 활용하셨다.
every()
는 배열이 주어진 조건을 모두 통과하는지를 판단하여 boolean
값을 반환한다.
따라서, spell
에 있는 모든 원소가 dic
의 배열 원소 하나에 포함돼야 true
를 반환한다.
이어서 filter()
는 참인 것만 판별하여 남겨놓기 때문에,
every()
연산에서 true
가 반환된 dic
만 남기고 나머지는 제거한다.
이렇게 생성된 배열의 길이가 0이라면, 문제 조건과 일치하는 문자가 없으므로 2를 return
하고
배열의 길이가 1 이상이라면, 문제 조건과 일치하는 것이 있으므로 1을 return
한다.