Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 객체의 밸류값만 찾기
- js 문자열을 문자배열로
- ubuntu타임존
- 문자열 중복
- 제로베이스
- 문자열순서바꾸기
- @Moditying @Query
- 시퀄 문법
- 중복문자제거
- 중첩배열평탄화
- 레디스 확인
- sql like연산자
- sql 문자열 패턴 검색
- 배엘에서 스왑
- 객체의키값만 찾기
- 5.3.8 Modifying Queries
- lastIndexOf()
- 우분투 시간 변경
- 중복된 단어
- indexOf()
- ...점점점문법
- 중첩배열
- 중복 문자열
- 재귀스왑
- 단어 제거
- 중복단어제거
- 프론트엔드 스쿨
- 깃 토큰 만료
- 스프링 데이타 JPA
- 코딩 어?
Archives
- Today
- Total
코딩기록
string) 글자 지우기 / for...of + slice, for + includes, filter - 배열 값/ 인덱스에 해당하는 문자 제거 or 배열 값/ 인덱스에 해당하지 않는 문자로 새로운 문자열 생성 본문
프론트/JS)코딩테스트
string) 글자 지우기 / for...of + slice, for + includes, filter - 배열 값/ 인덱스에 해당하는 문자 제거 or 배열 값/ 인덱스에 해당하지 않는 문자로 새로운 문자열 생성
뽀짝코딩 2024. 8. 12. 00:49728x90
문제 설명
문자열 str과 정수 배열 indices가 주어질 때, str에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ indices의 길이 < str의 길이 ≤ 100
- str은 영소문자로만 이루어져 있습니다
- 0 ≤ indices의 원소 < str의 길이
- indices의 원소는 모두 서로 다릅니다.
입출력 예
str
|
indices
|
result
|
"apporoograpemmemprs"
|
1, 16, 6, 15, 0, 10, 11, 3]
|
"programmers"
|
입출력 예 설명
입출력 예 #1
- 예제 1번의 str의 인덱스가 잘 보이도록 표를 만들면 다음과 같습니다.index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
str a p p o r o o g r a p e m m e m p r s
const solution = (str, indices) => {
// do something
};
console.log(solution('apporoograpemmemprs', [1, 16, 6, 15, 0, 10, 11, 3])); // 'programmers'
풀이
1번 풀이 filter, includes
특정 인덱스에 해당하지 않는 문자로 새롭게 문자열 생성.
- 문자열을 문자배열로 변경시 str.split('') 보다 [...str] 스프레드 문법이 더 간편하다.
- includes는 true / false 불린형으로 결과를 반환한다.
- str의 1, 16 ...인덱스가 true로 나오고
- 그 결과가 join('')으로, 문자열로 붙여 반환된다.
// str문자열에 indices가 포함되지 않은 문자열만 반환.
const solution3 = (str, indices) => {
// 특정 인덱스에 해당하지 않는 문자로 새롭게 문자열을 생성
return [...str].filter((_, i) => !indices.includes(i)).join('');
};
console.log(solution3('apporoograpemmemprs', [1, 16, 6, 15, 0, 10, 11, 3])); // 'programmers'
2번 풀이 for, inlcudes
특정 인덱스에 해당하지 않는 문자로 새롭게 문자열 생성.
- for문의 i는 index인덱스라는 0,1,2,3 배열의 순서를 의미한다.
- 인덱스 0 부터 str길이만큼 인덱스를 하나씩 추가하며 돈다.
- includes(i), str[i]의 i는 [1, 16 , 6, 15...] 이 배열안 요소(값)을 의미한다.
- str에 indices의 i는 1이라는 값이 포함되어 있지 않으면 res라는 식별자로 만든 빈문자열에
- 문자를 하나하나 추가해서 p+r+o+.... 'programmers'라는 문자열을 만들어 반환한다.
const solution2 = (str, indices) => {
let res = '';
for (let i = 0; i < str.length; i++) {
if (!indices.includes(i)) res += str[i];
}
return res;
};
console.log(solution2('apporoograpemmemprs', [1, 16, 6, 15, 0, 10, 11, 3])); // 'programmers'
3번 풀이 for...of, slice
특정 인덱스의 문자를 제거
- indices 배열을 내림차순으로 정렬하면 16, 15, 11, 10 ... 큰 숫자부터 앞으로 온다.
- for...of의 i는 indices 배열의 각 요소를, 즉 indices 배열의 각 값을 차례대로 가져온다.
- slice(0,i)는 0부터 i번째 인덱스 전까지의 값을 가져온다(i미포함).
- slice(0, 1) 이면 1의앞인 인덱스0을 가져온다.
- slice(i + 1)은 i + 1번째 인덱스부터 끝까지의 값을 가져온다.
- slice(2)면 인덱스2 부터 끝까지인 'poroograpemmemprs' 값을 가져온다.
- 가져온 두 값을 합해 str에 담아 반환한다.
// 특정 인덱스의 문자를 제거
const solution1 = (str, indices) => {
// indices 배열을 내림차순으로 정렬
indices.sort((a, b) => b - a);
// 각 인덱스에 해당하는 문자를 순차적으로 제거
for (const i of indices) {
// console.log(1111, str.slice(i + 1));
str = str.slice(0, i) + str.slice(i + 1);
}
return str;
};
console.log(solution1('apporoograpemmemprs', [1, 16, 6, 15, 0, 10, 11, 3])); // "programmers"
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments