▶filter() 함수와 ▶includes 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ indices의 길이 < my_string의 길이 ≤ 100
- my_string은 영소문자로만 이루어져 있습니다
- 0 ≤ indices의 원소 < my_string의 길이
- indices의 원소는 모두 서로 다릅니다.
입출력 예 & 설명
입출력 예 #1
- 예제 1번의 my_string의 인덱스가 잘 보이도록 표를 만들면 다음과 같습니다.
- indices에 있는 인덱스의 글자들을 지우고 이어 붙이면 "programmers"가 되므로 이를 return 합니다.
나의 풀이
먼저 indices의 요소의 인덱스와 my_string(str) 의 인덱스를 비교하기 쉽게 생각을 하면 문제의 입출력 예를 보면 my_string의 인덱스가 보이는데 이 인덱스만큼 for문을 돌리면 i와 indices의 요소(인덱스)를 비교하기 쉽습니다.
indices의 요소(제거할 인덱스)를 찾기위해 includes() 함수를 사용하면 왼쪽 boolean값과 같습니다.
즉 제거를 할 인덱스는 false값이기 때문에 논리 연산자 !를 사용하여 빈 answer 문자열에 연결해 주었습니다.
다른 풀이
다른 풀이에서는 filter() 함수를 사용했습니다.
기본적인 구조는 "나의 풀이"와 비슷하지만 전개연산자(...)를 사용하여 문자열을 전개하여 배열로 만들어줍니다.
전개해 준 배열 filter() 함수를 사용하여 str의 길이의 요소만큼 콜백함수의 조건인 indices에 i가 포함되어있지 않은 값들을 담은 배열을 만든 후 join()을 사용하여 각 요소를 문자열로 연결해 주었습니다.
처음에는 indices의 요소를 뽑아서 반복문을 사용해보고자 했지만 쉽지가 않았습니다.
문제를 다시 읽어보고 이해를 한 뒤 바로 문자열의 길이만큼 반복문을 돌려서 indices의 인덱스와 비교를 해 쉽게 풀 수 있었습니다.
물론 이번 문제에서 includes나 filter 함수도 중요하지만 문자열의 길이만큼 반복문을 돌려서 str 인덱스에 접근하는 것이 가장 포인트였던 것 같습니다.
▶map() 함수
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 수열과 구간 쿼리3 (JavaScript) (0) | 2024.02.06 |
---|---|
[프로그래머스] 빈 배열에 추가, 삭제하기 (JavaScript) (1) | 2024.02.03 |
[프로그래머스] 날짜 비교하기 (JavaScript) (1) | 2024.01.29 |
[프로그래머스] 등차수열의 특정한 항만 더하기 (JavaScript) (1) | 2024.01.28 |
[프로그래머스] 세로 읽기 (JavaScript) (1) | 2024.01.27 |