자바스크립트는 진짜 알다가도 모르겠다
문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- letter은 길이가 1인 영문자입니다.
- my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
- 대문자와 소문자를 구분합니다.
입출력 예my_stringletterresult
"abcdef" | "f" | "abcde" |
"BCBdbe" | "B" | "Cdbe" |
입출력 예 설명
입출력 예 #1
- "abcdef" 에서 "f"를 제거한 "abcde"를 return합니다.
입출력 예 #2
- "BCBdbe" 에서 "B"를 모두 제거한 "Cdbe"를 return합니다.
맨 처음 생각했던 아이디어는 split()으로 나눠서 배열로 만든 뒤 replace()로 요소를 삭제한 후 join()으로 이어 붙이는 것이었다.
function solution(my_string, letter) { var answer = ''; let arr = my_string.split("") for(let i = 0; i < arr.length; i++){ if(arr[i] == letter){ arr[i].replace(letter, "") } } answer = arr.join("") return answer; } |
아이디어는 좋았다고 생각했으나, replace 과정에서 문자열이 바뀌지 않는 사태가 일어났다...메!!
왜그랬을까 찾아 보니 배열에는 replace()를 사용하지 못한다는 것이었다 !!!
그렇다면 해결책은 두개
첫째, 문자열 형식 그대로 해결하기
둘째, 배열에서 다른 방식으로 문자열을 제거하기!
첫번째 방식은 문자열을 배열로 바꾸지 않은 상태에서 바로 replace()를 통해 문자열을 삭제하는 방법이었다. 나름 똑똑한 방법이라고 생각했지만.....
function solution(my_string, letter) { var answer = ''; answer = my_string.replace(letter,"") return answer; } |
이번에는 중복된 문자가 있을 경우 맨 앞의 하나만 삭제되는 불상사가 일어났다. 으악!!!!!
나중에 알게 된 건데 정규 표현식을 사용하면 가능하다는 말이 있으니...이건 뒤쪽 공부를 하면서 만날것 같으니 그때 제대로 다뤄보도록 하겠다.
두번째 방식은 배열 내에서 다른 방식으로 문자열을 제거하는 것이었다. 다른 방식이라...delete()?
애석하게도 delete()는 객체 내에서 사용 할 수 있고 배열에서는 사용하지 못한다고 알고 있다.
여기저기 알아보던 중 split()을 사용하면 된다는 글에서 힌트를 얻고 split()을 파기 시작했다.
그러던중 문득 떠오른 학교 과제 내용....
[국가, 선수이름, 피파랭킹] 형식으로 입력한 뒤 split(",")을 실행하면 배열에 하나씩 저장했던 과제가 떠올랐다.
아마 배열에는 ,를 제외한 입력 값들만 들어갔었지?
이거였구나~~ split()함수는 () 안에 들어간 매개변수를 기준으로 배열을 나누는 것이기 때문에, 매개변수 좌우의 값들만 나눠지고 매개변수 자신은 자연스럽게 사라진다는 특징이 있었다!!
이 문제에도 똑같이 적용해본다면, 특정 문자열을 기준으로 좌우 문자열들만 남고 기준이 된 특정 문자열들은 사라지게 된다는 것이었다. 요호~~~
바로 적용
function solution(my_string, letter) { var answer = ''; answer = my_string.split(letter).join("") return answer; } |
지우고 싶은 단어인 letter을 기준으로 좌우 문자열들은 남고 letter만 쏙 사라진다!
그 다음 join을 통해 조여주면 쉽게 해결되는 것이었다. 와우!!
'코딩 테스트 풀이 > 프로그래머스' 카테고리의 다른 글
[LV0] k의 개수 (0) | 2022.12.30 |
---|---|
[LV0] 중복된 문자 제거 (0) | 2022.12.29 |
[LV0] 인덱스 바꾸기 (0) | 2022.12.28 |
[LV0] 모음 제거 (0) | 2022.12.23 |
[LV0] 최댓값 만들기 (1) (0) | 2022.12.22 |