문제 풀이기록/JavaScript

[javaScript] 특정문자 제거하기 | 프로그래머스

개발하는 몽키 2025. 4. 27. 10:17

<문제>

https://school.programmers.co.kr/learn/courses/30/lessons/120826

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문자열 my_string에서 특정 문자 letter를 제거하는 문제를 풀어봤습니다.

이 문제에서는 문자열을 배열로 바꾼 뒤 반복문 또는 filter() 메서드를 활용하여 원하는 문자를 제거하는 방식으로 풀어보았습니다.


1. 문제해석

주어진 문자열 my_string에서 특정 문자 letter를 제거하여 새로운 문자열을 만드는 것이 목표입니다.

 

예를 들어

  • my_string = "abcdef", letter = "f" 이면 → "abcde"
  • my_string = "BCBdbe", letter = "B" 이면 → "Cdbe"

2 - 1. for문 사용

function solution(my_string, letter) {
    let result = '';
    let arr = my_string.split('');
    for(let i = 0; i < arr.length; i++) {
        if(arr[i] !== letter) {
            result += arr[i];
        }
    }
    return result;
}

 

먼저 문자열을 배열로 바꾸기 위해서 .split('') 을 사용하고, 반복문을 통해 한 글자씩 비교해가면서 문자 letter이 아닌 경우에만 새로운 result 문자열에 추가하는 방식으로 풀었습니다.  

 

2 - 2. filter 함수 사용

function solution(my_string, letter){
    let arr = my_string.split('').filter(char => char !== letter).join('');
    return arr;
}

 

 - my_string.split('') : 문자열을 배열로 바꿔줍니다.

 - .filter(char => char !== letter) : 배열을 하나씩 순회하면서 letter다른 문자만 남깁니다. letter에 해당하는 문자는 제거됩니다.

 - join('') : 배열을 다시 문자열로 합칩니다.


 

< 고민했던 부분 >

문제를 풀면서 문자열을 문자단위로 비교하기 위해선 어떤방법을 사용해야하는지 몰랐습니다.

그런데 .split('') 을 사용하면 문자열을 문자 하나하나로 쪼갠 배열로 변환할 수 있다는 것을 알게되었습니다.

배열로 변환하니까 원하는 letter 과 각 문자를 쉽게 비교할 수 있었습니다.

문자열을 문자 단위로 쪼개서 비교하거나 조작하고 싶을 때는 .split('')을 사용해서 배열로 바꿔주는 것이 좋다고 생각합니다.

 

 

< 새롭게 배운 부분 >

이전에는 filter() 함수를 몰랐기때문에 for문으로 순회하면서 일일이 조건을 걸어야한다고 생각했었습니다.

filter() 함수를 사용하니 배열을 순회하면서 조건에 맞는 원소만 깔끔하게 필터링 할 수 있어서 코드가 훨씬 간단해졌습니다.

앞으로는 for문보다 filter() 를 적극적으로 활용하여 코드의 가독성을 높일 수 있겠습니다.


[ 개념정리 ]

filter()

배열에서 조건에 맞는 원소들만 골라내는 함수입니다.

배열을 순회하면서 주어진 조건을 만족하는 원소들만 뽑아서 새로운 배열로 반환하고, 조건을 만족하지 않는 원소는 배열에서 제외됩니다.

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);  // 짝수만 뽑기
console.log(evenNumbers);  // [2, 4]

 

 -> 예제 코드에서 filter()는 배열 numbers를 순회하면서 수인 값만 골라서 새로운 배열 [2, 4]를 반환했습니다.