꺾이지 않는 마음

[프로그래머스] Lv.0 모음 제거 JS 풀이 본문

코딩테스트 기록

[프로그래머스] Lv.0 모음 제거 JS 풀이

중요한 것은 2022. 10. 27. 17:42

🧡문제 설명

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

💛제한사항

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

💚입출력 예

my_string result
"bus" "bs"
"nice to meet you" "nc t mt y"

💙입출력 예 설명

입출력 예 #1

  • "bus"에서 모음 u를 제거한 "bs"를 return합니다.

입출력 예 #1

  • "nice to meet you"에서 모음 i, o, e, u를 모두 제거한 "nc t mt y"를 return합니다.

 


✨나의 풀이

💜 fliter 함수 안에 && 연산자 써서 모음 하나씩 거르기

function solution(my_string) {
    return [...my_string].filter(ele => ele !== "a" && ele !== "e" 
    	&& ele !== "i" && ele !== "o" && ele !== "u")
        .join("")
}

 

풀이를 쓰면서 느꼈다.

이것 보다 훨씬 효율적인 코드가 있을 거라고...

이렇게 모음을 하나씩 && 연산자로 제거해나가면 답이야 나오지만, 이렇게 풀면 조건이 많아졌을 때 그냥 노가다 작업이 되버린다. 이런 코드는 좋은 코드라 할 수 없다 ㅠㅠ

일단 답은 나오니까 제출하고 다른 사람의 풀이를 보고 배우기로 했다.

 

😮 다른 풀이

❗ 논리 연산자 ! 를 배열에 활용하기

function solution(my_string) {
    return Array.from(my_string).filter(t => !['a', 'e', 'i', 'o', 'u'].includes(t)).join('');
}

 

오.. 배열에도 !(not 연산자)를 쓸 수 있다니.. 진짜 처음 알았다.

아니 근데 ! 연산자는 true와 false 같은 불린형을 반환하는 논리연산자 아니였나???

기본기 교재를 내가 몇 권을 봤는데 여태 이렇게 쓴 걸 본적이 없어서 몰랐다 ㅠㅠ

이제라도 알았으니 됐다!

 

성장 + 1스택

 

 

 

Comments