
문제 설명
myString의 부분 문자열 중pat로 끝나는 가장 긴 부분 문자열을 찾아 반환
| myString | pat | result |
|---|---|---|
| "AbCdEFG" | "dE" | "AbCdE" |
| "AAAAaaaa" | "a" | "AAAAaaaa" |
function solution(myString, pat) {
return myString.slice(0, (myString.lastIndexOf(pat))+pat.length)
}
풀이 설명
- 가장 길땐 일반적으로 검색방법인
왼쪽→오른쪽이 아니라오른쪽→왼쪽으로 검색하는것이 훨씬 빠르다.lastIndexOf()메서드를 사용하여myString의 오른쪽에서부터pat을 검색한다.0부터 찾은 인덱스에pat의 길이만큼 더해준 인덱스 번호까지slice()메서드를 사용하여 잘라 반환한다.
문제 설명
myString에서pat이 등장하는 횟수를 반환
| myString | pat | result |
|---|---|---|
| "banana" | "ana" | 2 |
| "aaaa" | "aa" | 3 |
function solution(myString, pat) {
let cnt = 0;
for (let i = 0; i <= myString.length - pat.length; i++) {
if (myString.slice(i, i + pat.length) === pat) {
cnt++;
}
}
return cnt;
}
풀이 설명
pat의 등장 횟수를 카운트할 변수cnt를0으로 선언한다.- 인덱스를 증가시키면서
pat문자열의 길이만큼을 잘라 잘라낸 문자열이pat과 같다면cnt를1증가시킨다.myString의 길이에서pat의 길이를 뺀 만큼 반복한다.
문제 설명
문자열 배열
strArr에 있는 문자열들 중ad가 포함된 문자열을 제거한 나머지 문자열을 순서를 유지하여 배열로 반환하시오.
| strArr | result |
|---|---|
| ["and","notad","abcd"] | ["and","abcd"] |
| ["there","are","no","a","ds"] | ["there","are","no","a","ds"] |
function solution(strArr) {
return strArr.filter((word) => !(word.includes("ad")))
}
풀이 설명
strArr을filter()메서드를 사용하여 콜백함수에 조건을 설정해준다.- 배열을 순회하며 원소를 받을
word에 "ad"가 포함돼 있을때!을 붙혀 그때만false가 되게 만든다.- 결과적으로
ad가 포함된 문자열을 제외한 나머지 문자열이 순서를 유지하며 반환된다.
문제 설명
공백이 포함된 하나의 문자열에서 공백으로 구분된 글자들을 하나의 문자열 원소로 하여 배열을 반환
| my_string | result |
|---|---|
| "i love you" | ["i", "love", "you"] |
| "programmers" | ["programmers"] |
function solution(my_string) {
return my_string.split(" ")
}
풀이 설명
split()메서드를 사용하여my_string의 공백으로 구분된 문자열을 잘라 배열로 반환한다.
문제 설명
단어가 한 개 이상의 공백으로 구분된 문자열을 분리하여 배열로 반환
| my_string | result |
|---|---|
| "i love you" | ["i", "love", "you"] |
| " programmers " | ["programmers"] |
function solution(my_string) {
return my_string.split(" ").filter(word => !(word==""));
}
풀이 설명
my_string을split()메서드로 분리 시켜준다음 빈문자열이 원소로 들어가는 것을 방지하기위해filter()메서드를 사요하여 문자열이 비어있지 않은 경우의 원소들만 배여롤 반환한다.