프로그래머스 | 공통된 문자

chaen·2024년 3월 2일
post-thumbnail

📌 문제

문자열 배열 arr가 있습니다. 이 문자열의 공통된 문자를 오름차순으로 출력하세요. arr은 영어 소문자로 이루어져 있으며, 공통 문자는 중복 없이 출력합니다.

입출력 예

arranswer
['apple', 'naver']['a', 'e']
['apple', 'naver', 'banana']['a']

✨ 해결 방법

배열 arr의 요소 개수를 알 수 없으므로, 0번째 요소와 나머지를 하나씩 비교하면 편리할 것 같습니다. 효율성을 위해 set을 이용하여 0번째 요소의 중복된 문자를 거른 후, i를 1로 설정하여 arr의 길이만큼 순회하며 검사합니다. 마찬가지로 i번째 요소를 set을 이용하여 거른 후 두 set에서 공통된 요소가 있는지 검사하여 앞선 set에 업데이트합니다.
만약 배열을 모두 돌았는데 set에 요소가 남아있다면 공통된 요소가 있다는 말이므로 set을 오름차순으로 정렬하여 출력하고, 없다면 빈 배열을 출력합니다.

💻 solution

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 [];
    }
}

참고: has()와 includes()

0개의 댓글