[프로그래머스-기초] 글자 지우기

JiEun·2023년 12월 24일
0

코테/코플릿

목록 보기
40/56

글자 지우기

문제 설명

문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

1 ≤ indices의 길이 < my_string의 길이 ≤ 100
my_string은 영소문자로만 이루어져 있습니다
0 ≤ indices의 원소 < my_string의 길이
indices의 원소는 모두 서로 다릅니다.

입출력 예

my_stringindicesresult
"apporoograpemmemprs"[1, 16, 6, 15, 0, 10, 11, 3]"programmers"

입출력 예 설명

입출력 예 #1
예제 1번의 my_string의 인덱스가 잘 보이도록 표를 만들면 다음과 같습니다.

index0123456789101112131415161718
my_stringapporoograpemmemprs

indices에 있는 인덱스의 글자들을 지우고 이어붙이면 "programmers"가 되므로 이를 return 합니다.

💻 내가 작성한 코드

function solution(my_string, indices) {       
    return [...my_string].filter((_, idx) => !indices.includes(idx)).join('')
}

초반에 갈피를 제대로 잡지 못 했었다.

indices 요소가 my_string의 index값에 포함된건 추출하기 쉬웠으나 그 반대로하는데 어려웠다.

결국 다른 사람들이 작성한 문제를 보면서 풀었다ㅠ

우선 내가 해당 문제를 풀지 못했던 이유 중 하나는
includes가 문자열에만 사용할 수 있다고 생각했기 때문이다.

mdn - includes 설명

mdn에서 includes는 문자열에 사용하는 메소드라 소개되어 있어
문자열에만 사용가능한 줄 알았다.

허나... 문자는 유사배열... 그럼 배열에서도 사용이 가능했던 것...ㅠ

이후 다시 문제를 풀었을 때

my_string을 배열로 변경했다.
split('')를 사용해 배열로 만들어 줄 수 있었지만 좀 더 간단하게 작성하기 위해
spread syntaxs로 작성해 간결하게 표현했다. [...my_string]

!indices.includes(idx)는 indices에 해당 idx 값이 포함 되어 있지 않은 값만 반환하는걸 뜻한다.
includes 매개 변수의 값이 포함될 경우 true, 아닌 경우 false를 반환한다.

마지막으로 배열인 값을 join('')해줘 문자열로 반환한다.

💻 다른 사람이 작성한 코드

function solution(m, a) {
    var answer = '';

    for(let i = 0; i<m.length; i++){
        if(!a.includes(i)){
            answer += m[i]
        }
    }

    return answer;
}

굳이 배열로 변환하지 않고 for문을 사용해 값을 반환할 수도 있다.


✏️ 마치며

이번 문제의 핵심은 includes()를 아는지 모르는지에 따라 달라지는 것 같다.

이번 기회로 includes는 제대로 알고 간다.

profile
💻 프론트엔드를 목표로 성장 중! (알아봤던 내용 등을 정리하기)

0개의 댓글