이번에는 문자열과 관련된 문제를 풀면서 알게된 메서드를 소개해드리겠습니다.
Array.includes(valueToFind[, fromIndex])
includes() 메서드는 문자열, 배열 또는 유사 배열 객체에 특정 요소가 포함되어 있는지 여부를 확인하는 메서드입니다. 이 함수는 주어진 요소가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
문제로 들어가보면
해당 문자열에 연속된 일부분에 해당하는 문자열이 있는지 있다면 1, 없다면 0을 반환값을 출력해야 합니다.
처음에는 includes() 메서드에 대해서 알고 있지 않았습니다. 근데 구글링을 통해 알게 돼서 활용하게 되었는데 너무 간편하게 사용할 수 있는 메서드인 것 같습니다!
function solution(my_string, target) {
return my_string.includes(target) === true ? 1 : 0
}
if()대신 삼항연산자를 활용해서 한 줄로 코드를 작성해 봤습니다 (이제 삼항연사자 좀 쓸 줄 아는 것 같아요😁)
이 문제 말고도 다른 문제를 풀면서도 includes()를 활용해봤습니다.
이 문제는 앞선 문제와 똑같이 연속된 문자가 포함되어 있는지 아닌지를 판별하는 문제입니다. 하지만 조금의 다른 점은 문자가 대소문자가 포함되어 있고 대소문자 구분 없이 문자의 포함 여부를 판별해야 하는 문제입니다.
function solution(myString, pat) {
const upper = pat.toUpperCase()
const upperStr = myString.toUpperCase()
return upperStr.includes(upper) === true ? 1 : 0
}
저는 모든 문자를 대문자로 변경하여 문제를 풀었습니다. 그때 활용한 메서드는 toUpperCase() 입니다. 그리고 나서 includes()메서드를 활용하여 문제를 해결하였습니다. 이틀 정도는 문제만 보고 다른 문제를 풀곤 했는데 includes() 메서드를 활용해서 5분 만에 해결했습니다😎
startsWith(searchString)
startsWith(searchString, position)
startsWith() 메서드는 어떤 문자열이 특정 문자로 시작하는지 확인하여 결과를 true 혹은 false로 반환합니다. -Mdn 출처
이 문제를 제가 아는 메서드를 활용해서 풀고 싶었습니다.(이틀 정도는 고민하고 썼다 지웠다 했습니다..ㅠㅠ)
근데 도저히 모르겠어서 결국 구글링을 해서 해결했습니다. startsWith()메서드를 활용해서 문제 푸는 데 까지 10분도 안 걸렸던 것 같습니다.
function solution(my_string, is_prefix) {
return my_string.startsWith(is_prefix) === true ? 1 : 0
}
이렇게 문제를 풀고 나서 다른 사람들의 풀이를 보고 입이 떡! 벌어졌습니다. 제가 아는 메서드를 활용해서 충분히 풀 수 있는 문제였는데 왜 이렇게 생각이 안났던 건지..
function solution(my_string, is_prefix) {
return my_string.slice(0, is_prefix.length) === is_prefix ? 1 : 0
}
위 문제풀이는 다른 분의 풀이입니다. slice() 메서드를 활용해서 문자를 자르고 자른 문자가 주어진 문자와 맞는지 비교하는 방식으로 해결하셨더라고요
정말 능력자들이 많은 세상이네요..
저도 제가 아는 메서드로 활용하면 좋았겠지만 이번 기회에 startswit() 메서드를 알게 되는 좋은 경험이었습니다.
어쩌다 보니 하루에 문자열과 관련된 문제만 3문제를 풀게 돼서 풀면서 알게 된 메서드를 소개해 드렸습니다 그러면 저는 또 다른 공부를 하러.. 뿅!🤓