본문 바로가기

코딩 테스트 풀이/프로그래머스

[LV0] 모음 제거

문제 설명

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


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

입출력 예my_stringresult
"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합니다

참내 나 진짜 

replace(), split() 이 두개 쓰는게 꽤나 헷갈리는 것 같다 

 

이 문제는 바로 아래에 풀었던 특정 문자 제거와 완전 같은 문제인 것 같다....

다만!!!!!

그 녀석은 문자열 하나만 제거하면 됐는데...이 녀석은 모음 5개를 한번에 제거해야 했다!

 

늘 하던대로 split()과 join()을 이용해 문제를 풀었는데...오잉? 

첫번째 케이스는 잘 되었으나 두번째 케이스가 잘 안됐던 것이었다. 그러면서 나이스 투 미츄~ 하는게 어이없어

그래서 저번 문제에서 보려다 만 정규 표현식을 데리고 와봤다. 

 

정규표현식은 대충 정해진 규칙을 이용해 문자의 어디어디를 바꾸거나 찾는 방법을 알려주는 녀석이었다. 편리해!

매개변수로 사용할 때는 " " 대신 / /를 사용하며, 문자열 전체를 검색하고 싶을때는 뒤에 .g, 대소문자 구분은 i를 붙이면 된다고 한다. 

 

바로 적용. 

function solution(my_string) {
    var answer = '';
    answer = my_string.split(/["a", "e", "i", "o", "u"]/g).join("").
    return answer;
}

어라라라라라?

왜 결과는 nc t mt y가 아니라 nctmty(nct 새로운 유닛인가?)로 나오니~~~~~~~

여기서 또 또 하나 커다랗게 실수한 것! 

join()은 배열 내의 공백을 자동으로 제거하고 이어 붙이는 것이기 때문에 공백은 무조건 사라지게 된다는 것!

허미~~~~ 이걸 왜 이제 알았지 ㅎㅎ

 

여튼, 그렇다면 좀더 복잡한 프로세스를 거치기로 했다.

1. 공백을 모두 _로 바꿔주기

<2. split() 및 join() 실시

3. _를 다시 공백으로 바꿔주기!

function solution(my_string) {
    var answer = '';
    answer = my_string.replace(/ /g, "_").split(/["a", "e", "i", "o", "u"]/g).join("").replace(/_/g, " ")
    return answer;
}

흠.,.. 복잡하고 멍청하지만 결과는 완벽하게 나왔다.

처음엔 잘 안돼서 왜 그런지 봤더니 / / 안에는 ""를 넣지 않아도 된단다. 오호~

 

그러다가 좀더 편한 과정은 없을까 하고 다른 분들의 풀이를 보던 와중.... 굉장히 간단한 코드가 있어서 그것에 대해 공부해 보았다. 

function solution(my_string) {
    var answer = '';
    answer = my_string.replace(/[aeiou]/g, "")
    return answer;
}

혹시 서울대학교에 재학중이신가요?

 

이 풀이의 요점은, 정규표현식을 사용할 때 [ ]를 이용하면 [ ] 안에 들어있는 문자들은 따로 구분을 해주지 않아도 알아서 개별로 구분이 된다는 것!!!!

예를 들어 replace(/aeiou/g,"")는 "aeiou"라는 하나의 문자열을 찾아서 바꾸는 것이지만, 

replace(/[aeiou]/g,"")는 문자열 내의 a,e,i,o,u를 모두 찾아 바꿔준다는 것 !!!! 오오 

뭔가 슬슬 replace()에 대해 감이 잡혀가는 것 같기도 하고... 몰루! 

'코딩 테스트 풀이 > 프로그래머스' 카테고리의 다른 글

[LV0] k의 개수  (0) 2022.12.30
[LV0] 중복된 문자 제거  (0) 2022.12.29
[LV0] 인덱스 바꾸기  (0) 2022.12.28
[LV0] 특정 문자 제거하기  (1) 2022.12.23
[LV0] 최댓값 만들기 (1)  (0) 2022.12.22