영어에선 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 |