문제
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
입출력 예
str1 = "ab6CDE443fgh22iJKlmn1o";
str2 = "6CD";
str1 = "ppprrrogrammers"
str = "ppprrrogrammers";
내가 해결한 방법
const solutions = (str1, str2) => {
if (str1 == str1.split(str2).join("") {
return 2;
} else {
return 1;
}
};
str1이 "ab6CDE443fgh22iJKlmn1o"라고 치자
str1에 split를 사용하여 str2만큼 잘라서 새로운 문자열을 반환했다
반환된 str2 값은 'ab', 'E443fgh22iJKlmn1o'이 된다
거기에 join("")을 통해서 붙여주면 'abE443fgh22iJKlmn1o' 이 된다
if문에 조건문 부분을 보면
str1 == str1.split(str2).join("")
이 부분은 아래와 같이 풀어쓸 수 있다
"ab<u>**6CD**</u>E443fgh22iJKlmn1o" == "'abE443fgh22iJKlmn1o'"
즉, str1이 str2와 같은 경우는 str1에 str2가 없다는 말이므로 2를 리턴하고
같지 않은 경우(str1에 str2가 있는 경우)에는 1을 리턴한다
근데 이렇게 풀 필요가 없었다...
다른 사람의 풀이를 보니 includes 메소드로 아주 쉽게 풀었었다
function solution(str1, str2) {
return str1.includes(str2) ? 1 : 2;
}
includes 메소드는 문자열이 특정 문자열을 포함하는지 확인하는 메소드이다
sting.includes(검색할 문자열(대소문자구분함), 검색을 시작할 위치)
이런 식으로 사용하는 것이었다...
예를 들면 'abcdefg'가 g를 포함하는지 includes메소드를 사용해본다면 아래와 같다
'abcdefg'.includes('g')
g를 포함하므로 true반환
'abcdefg'.includes('a', 3)
3번째부터 검색을 시작하므로 'defg'에 a를 포함하는지 검색한다
'defg'에 a가 없으므로 false반환함
메소드를 더 잘 알아야겠다는 생각을 했다...