[js] 중복된 문자 제거 (lv.0, 정답률 86%)

sookyoung.k·2024년 4월 30일
0
post-thumbnail

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string ≤ 110
  • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
  • 대문자와 소문자를 구분합니다.
  • 공백(" ")도 하나의 문자로 구분합니다.
  • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

😌 나의 풀이

function solution(my_string) {
    let arr = my_string.split('');
    let newArr = [];
    
    for (let i=0; i<arr.length; i++) {
        if(!newArr.includes(arr[i])) newArr.push(arr[i])
    }
    
    return newArr.join().replaceAll(',', '');
}

나는 중복을 제거할 다른 방법이 떠오르지 않아서 include() 메서드를 사용했다.

  • 주어진 my_string을 배열로 쪼개고, 중복을 제거한 문자를 담은 새 배열을 선언했다.
  • for문을 돌면서 newArr에 my_string을 쪼갠 배열에 담긴 문자 하나하나를 돌며 값이 포함되어 있는지를 확인한 후, 포함되어 있지 않다면 새 배열(newArr)에 넣어줬다.
  • 새 배열을 다시 문자열로 함친 후, ',' 문자를 제거하여 리턴했다.

😙 다른 풀이

function solution(my_string) {
    return [...new Set(my_string)].join('');
}

문자열을 Set 자료구조에 넣어서 중복을 제거하며 바로 배열에 넣어준다.
split()으로 굳이 나누지 않고도 되는데...! 권수경은 바보야... 또까먹음. 담엔 기억하자!!

😗 다른 풀이 2

var solution=s=>[...s].filter((c,i)=>s.indexOf(c)==i).join('')
  • 문자열을 바로 배열에 넣을 수 있다! 기억하길...

  • 그 후 filter함수를 통해 각 문자 c와 해당 문자의 인덱스 i를 확인한다. 해당 문자의 첫 번째 등장 위치(s.indexOf(c))와 현재 위치(i)가 같다면 중복되지 않는 문자이므로 새로운 배열에 포함시킨다.

profile
영차영차 😎

0개의 댓글

Powered by GraphCDN, the GraphQL CDN