728x90
// 오답: 실행시간 10초 이상 소요
function solution(my_string, letter) {
var answer = '';
for (let i = 0; i < my_string.length; i++) {
while (my_string[i] === letter) {
answer = my_string.replace(letter, '');
}
}
return answer;
}
[오답노트]
- replace 메소드와 정규 표현식을 사용할 경우 for 루프는 필요하지 않다.
// 오답: 테스트 케이스 1개만 통과
function solution(my_string, letter) {
let answer = '';
for (let i = 0; i < my_string.length; i++) {
if (my_string[i] === letter) answer = my_string.replace(/letter/g, '');
}
return answer;
}
[오답노트]
- 문제에서 전역에서 특정문자를 제거하라고 제시했기 때문에, 전역에서 문자 찾는 로직이 필요하다.
- 하지만, 다음과 같이는 사용할 수 없다. letter가 변수로 인식되지 않고 하나의 문자열 값으로 인식되어 정상 동작하지 않기 때문my_string.replace(/letter/g, "");
[해결방법]
// 정답
function solution(my_string, letter) {
return my_string.replace(new RegExp(letter, 'g'), "");
}
따라서, 위와 같이 동적으로 변하는 문자열을 찾을 때는 정규 표현식 객체 생성자를 이용해야한다.
replace 안에 변수를 넣을 수 있다. 또는 아래와 같이 풀어쓸 수도 있다.
function solution(my_string, letter) {
let regexAll = new RegExp(letter, 'g')
return my_string.replace(regexAll, "")
}
다음은 정규표현식의 다양한 활용법이다.
let regexOne = new RegExp(pattern); // 일치하는 패턴 중 최초 등장하는 패턴 한 번만 찾음
let regexAll = new RegExp(pattern, "g"); // 모든 패턴을 찾음
let regexAllCase = new RegExp(pattern, "gi"); // 대소문자 구분 없이 모든 패턴을 찾음
[참고자료]
https://jess2.xyz/JavaScript/variable-regex/
728x90
반응형
'코딩테스트(JavaScript) > 코딩테스트 입문' 카테고리의 다른 글
프로그래머스-진료 순서 정하기 (0) | 2023.08.24 |
---|---|
프로그래머스-외계행성의 나이 (0) | 2023.08.23 |
프로그래머스-짝수 홀수 개수 (0) | 2023.08.20 |
프로그래머스-직각삼각형 출력하기 (0) | 2023.08.18 |
프로그래머스-옷 가게 할인 받기 (0) | 2023.08.16 |