
문자열 배열 arr가 있습니다. 이 문자열의 공통된 문자를 오름차순으로 출력하세요. arr은 영어 소문자로 이루어져 있으며, 공통 문자는 중복 없이 출력합니다.
입출력 예
| arr | answer |
|---|---|
| ['apple', 'naver'] | ['a', 'e'] |
| ['apple', 'naver', 'banana'] | ['a'] |
배열 arr의 요소 개수를 알 수 없으므로, 0번째 요소와 나머지를 하나씩 비교하면 편리할 것 같습니다. 효율성을 위해 set을 이용하여 0번째 요소의 중복된 문자를 거른 후, i를 1로 설정하여 arr의 길이만큼 순회하며 검사합니다. 마찬가지로 i번째 요소를 set을 이용하여 거른 후 두 set에서 공통된 요소가 있는지 검사하여 앞선 set에 업데이트합니다.
만약 배열을 모두 돌았는데 set에 요소가 남아있다면 공통된 요소가 있다는 말이므로 set을 오름차순으로 정렬하여 출력하고, 없다면 빈 배열을 출력합니다.
function solution(arr) {
let set = new Set(arr[0]);
for (let i=1; i<arr.length; i++){
let curr = new Set (arr[i]);
set = new Set([...set].filter(e => curr.has(e)))
}
if (set.length !== 0){
return Array.from(set).sort();
} else {
return [];
}
}