
문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
indices의 길이 < my_string의 길이 ≤ 100my_string은 영소문자로만 이루어져 있습니다indices의 원소 < my_string의 길이indices의 원소는 모두 서로 다릅니다.| my_string | indices | result |
|---|---|---|
| "apporoograpemmemprs" | [1, 16, 6, 15, 0, 10, 11, 3] | "programmers" |
입출력 예 #1
my_string의 인덱스가 잘 보이도록 표를 만들면 다음과 같습니다.| index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| my_string | a | p | p | o | r | o | o | g | r | a | p | e | m | m | e | m | p | r | s |
`indices에 있는 인덱스의 글자들을 지우고 이어붙이면 "programmers"가 되므로 이를 return 합니다.`
function solution(my_string, indices) {
// Set으로 변환하여 빠른 검색 수행
const indicesSet = new Set(indices);
// 제거할 인덱스를 제외하고 문자열 구성
return [...my_string].filter((_, idx) => !indicesSet.has(idx)).join('');
}
// 입출력 예 테스트
console.log(solution("apporoograpemmemprs", [1, 16, 6, 15, 0, 10, 11, 3])); // "programmers"
Set 변환:indices 배열을 Set으로 변환하여 인덱스의 존재 여부를 효율적으로 확인합니다.Set은 데이터 검색과 확인 작업에서 평균 시간 복잡도가 입니다. O(1)O(1)[1, 16, 6, 15, 0, 10, 11, 3] → Set { 1, 16, 6, 15, 0, 10, 11, 3 }.filter 메서드로 my_string을 순회하면서 indicesSet.has(idx)로 현재 인덱스가 indices에 포함되어 있는지 확인합니다.!indicesSet.has(idx)), 해당 문자를 결과 배열에 유지합니다.join('')으로 결합하여 최종 문자열을 반환합니다.solution("apporoograpemmemprs", [1, 16, 6, 15, 0, 10, 11, 3]);
indicesSet 변환:Set { 1, 16, 6, 15, 0, 10, 11, 3 }.filter 적용:0 → indicesSet.has(0) → true → 제외.1 → indicesSet.has(1) → true → 제외.2 → indicesSet.has(2) → false → 유지.['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'e', 'r', 's'].join으로 결합:"programmers".