Q. 주어진 문자열에서 첫 번째 'a'의 index찾기
조건 1 : 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환
조건 2 : indexOf 함수를 사용하지 말것
//주어진 문자열
const output = getFind('a', 'I am a hacker')
A. 처음 제출한 답
function getFind(filter, sentence) {
let arr = sentence.split("");
let result = sentence.includes('a')
if ( result === true ){
return result
} else {
return -1
}
}
// true
- 먼저 split 메서드를 사용해 sentence값으로 들어오는 'I am a hacker'문자열을 쪼개어 배열로 만든다.
그 다음 a를 포함하는 지 아닌지 체크 후
조건에 따라 뭔가를 return하려고 했다가.
못함.
A. 수정해 본 답
function getFind(filter, sentence) {
let arr = sentence.split("");
for(let i = 0 ; i < arr.length ; i++){
if(filter === arr[i]){
return i
}
}
return -1
}
// 2
for문을 추가해 문제를 다시 풀었다.
- 문자열을 split으로 쪼개 담은 배열 arr를 for문으로 돌면서
- if문으로 해당 값과 filter로 받아오는 문자열 'a'값과 일치하는지 확인
- 일치하면 그 index값을 return하는 것
function getFind(filter, sentence) {
let arr = sentence.split("");
for(let i = 0 ; i < arr.length ; i++){
if(filter === arr[i]){
return i
} else {
return -1
}
}
}
// -1
이 때 'a' 가 존재하지 않을 때의 반환문을 if else문으로 붙여버린다면
for 문이 첫 턴에서 -1를을 반환하고 함수를 나가버림
B. 만약 indexOf를 사용해도 된다면?
function getFind(filter, sentence) {
let arr = sentence.split("");
let check = [];
for(let i = 0 ; i < arr.length ; i++){
check.push(arr[i])
}
return check.indexOf('a')
}
// 2
그리고 동기분들이 알려준 방법
C. search메서드를 활용해서 초간단하게 풀어보기
function getFind(filter, sentence) {
return sentence.search('a')
}
// 2
search()메서드
- 정규표현식과 주어진 스트링 간에 첫번째로 매치되는 것의 인덱스를 반환.
매치되는 값이 없으면 -1 을 반환 (MDN명세)
반응형
'D.evelop [CS] > Algorithm' 카테고리의 다른 글
[Algorithm 006] JS - reverse (0) | 2021.09.14 |
---|---|
[Algorithm 005] JS - twoSum (0) | 2021.09.14 |
[Algorithm 003] JS - 가장 긴 단어 찾기 (0) | 2021.09.11 |
[Algorithm 002] JS - 최소값, 최대값 구하기 Math.random() (0) | 2021.09.09 |
[Algorithm 001] JS - 사칙연산 (0) | 2021.09.07 |
댓글