<문제>
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]를 반환했습니다.
'문제 풀이기록 > JavaScript' 카테고리의 다른 글
[ Js ] 나머지 구하기 / 프로그래머스 (0) | 2025.08.24 |
---|---|
[ Js ] 두 수의 곱 구하기 / 프로그래머스 (2) | 2025.08.24 |