JavaScript/알고리즘

프로그래머스 꼬리 문자열 JS ( filter(), includes(),join() / reduce를 사용해서 요소삭제, 문자열 이어붙이기)

hihiha2 2023. 6. 5. 15:54
반응형

프로그래머스 꼬리 문자열 JS 

 

문제 설명

문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다.

 

문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요.

 

 

 

✅ 내 코드

function solution(str_list, ex) {
    return str_list.filter(a => !a.includes(ex)).join('')
}

 

배열 str_list를 하나하나 돌면서 검사를 해야하기 때문에 filter()를 사용해야겠다고 생각했다.

filter로 str_list안의 값들을 일일이 검사하는데 str_list.filter(a => 

이때 ex값을 포함하고 있다면  a.includes(ex)

제외시키는 코드를 짜기위해서 !연산자를 사용했다. !a.includes(ex)

그러고나서, join('') 연산자로 배열의 값들을 이어붙였다.

 

 

 

 

💻  다른사람 코드중에 배울 것 1 (reduce를 이용한 방법)

const solution = (strs, ex) => strs.reduce((acc, cur) => acc + (cur.includes(ex) ? '' : cur), '')

배열을 이어붙이는 방법으로 나는 join()을 사용했는데, 다른 방법을 통해서 붙인방법들이 흥미로워서 공부하였다.

또 포함하는 요소를 제거하는 방법도 달랐다. 

 

이 코드는 join()대신 reduce()를 이용해서 배열의 값들을 붙였다.

includes()를 통해서 현재의 요소에 ex가 포함되는지 검사하는 것은 내 코드와 같다. 나는 filter를 통해서 포함된 요소를 제거했다면 이 코드는 cur를 ''빈값으로 바꾸는 방법으로 제거했다. 

그런 다음 acc를 통해서 값을 축적하면서 join()과 같이 값들을 붙였다.

 

나는 풀면서 reduce()는 생각하지 못했는데 요소의 제거와 이어붙이는 것을 reduce로도 할 수 있는 점이 재밌었다.

다음에 이런 방법도 생각해보면 좋을것같다.

 

 

 

💻  다른사람 코드중에 배울 것 2

function solution(str_list, ex) {
    let result = '';

    for(let i = 0; i < str_list.length; i++) {
        if(!str_list[i].includes(ex)) {
            result += str_list[i];
        }
    }    

    return result;
}

이 코드는 for문을 이용한 방법으로 특별한 방법은 아니지만, 문자열을 이어붙이는 방식때문에 공부해보았다.

평소에 자바스크립트에서 string을 붙이는 방법으로 + 연산자를 사용한다는 것을 알고는 있었지만 이 문제를 풀면서 따로 생각이 나지는 않았다. 배열의 요소를 돌면서 + 연산자를 통해서 값을 이어붙이는 것이 제일 기본적인 방법인데 왜 떠올리지 않았을까하는 생각이 들었다 🤔

 

 

 

💻 학습한것

배열을 String으로 바꾸면서 이어붙이는 방법

1. join()

2. reduce()의 acc활용

3. + 연산자 이용

 

 

 

🙋‍♀️ 내 생각

문제를 풀면서 같은 문제를 보고도 각자 다른 방법으로 푼다는 것이 재밌는것 같다. 그래서 내가 푼 방법말고도 다른 사람들이 어떻게 풀었는지를 보면서 이런식으로도 풀수있구나하는 생각이들기도 하고 '메서드들을 이런식으로 활용하기도 하는구나', '이런방식으로 쓰면 좋을것같다'라는 생각도 든다. 

내가 푼 방법말고도 저렇게 string을 이어붙이기 위해 다양한 방법이 있는게 흥미롭다. 다음번에는 다른 방법으로도 풀어봐야겠다.

 

 

반응형