[JS알고리즘] 모음 제거

Park Bumsoo·2022년 10월 4일
0

JS알고리즘

목록 보기
1/7

문제 설명
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • my_string은 소문자와 공백으로 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000

풀이


function solution(my_string) {
    const str = 'aeiou'
    
    let newString = my_string.split('')
    
    for(let i = 0; i<aeiou.length; i++){
        for(let j = 0; j<my_string.length; j++){
            if(newString.includes(aeiou[i])){
            newString.splice(newString.indexOf(aeiou[i]), 1)
            } 
        }  
    }
    
    return newString.join('');
}

이중 for문을 이용한 풀이로 Array.spclice() 메서드를 사용한 풀이이다.
모음을 담은 문자열을 변수로 선언하여 이를 활용했으며 Array.spclice()
메서드를 사용하기에 split 메서드를 이용하여 배열로 변환하였다.

이중 for문으로 문자열 하나하나를 비교하기에 문자열이 길어질수록 효율이 안좋아지는 단점을 가지고있다.


function solution(my_string) {
    
    const str = 'aeiou'
    let newString = my_string.split('').filter((el)=>(!str.includes(el))).join('')
    
    return newString
    
}

마찬가지로 모음을 담은 문자열을 변수로 선언하여 이를 활용했으며
fiter를 활용하여 문제를 해결해보았다.


function solution(my_string) {
    
    return my_string.replace(/['a','e','i','o','u']/g,'')
    
}

replace 메서드와 정규식을 이용하여 작성한 방식으로 처음에 비해 많이 간결하고 쉬우며,
문자열을 한번 순회하는게 전부 이기에 속도또한 빨랐다.

replaceAll 메서드를 이용한 풀이또한 가능하지만 문제의 출처인 프로그래머스는 이를 지원하지않는다.

출처 : 프로그래머스(https://school.programmers.co.kr)

profile
프론트엔드 주니어 개발자(React, Next.js)

0개의 댓글