PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.
filter()
와 every()
를 활용하여 문제를 해결할 수 있다.
every()
는 배열이 주어진 조건을 모두 통과하는지를 판단하여 boolean 값을 반환한다. 따라서 spell
에 있는 모든 원소가 dic
의 배열 원소 하나에 포함돼야 true를 반환한다.
이어서 filter()
는 참인 것만 판별하여 남겨놓기 때문에,
every()
연산에서 true가 반환된 dic
만 남기고 나머지는 제거한다.
이렇게 생성된 배열의 길이가 0이라면, 문제 조건과 일치하는 문자가 없으므로 2를 return하고, 배열의 길이가 1 이상이라면, 문제 조건과 일치하는 것이 있으므로 1을 return한다.
filter()은 해당 배열의 원소가 어떤 조건을 만족시키는 경우에만 그 배열을 남겨두고 그렇지 않은 경우에는 제거하는 메서드이다.
리턴 값이 모두 True
일 경우에만 true를 반환한다.
includes 안에 들어있는 인자가 배열에 있는 경우에 True
를 반환한다.
function(spell, dic){
return dic.filter(v => spell.every(c => v.includes(c))).length ? 1 : 2;