부분 문자열인지 확인하기(Lv.0)[indexOf는 변수를 받으면 문자열로 변경]
<문제>
부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.
문자열 my_string과 target이 매개변수로 주어질 때, target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string은 영소문자로만 이루어져 있습니다.
- 1 ≤ target의 길이 ≤ 100
- target은 영소문자로만 이루어져 있습니다.
입출력 예my_stringtargetresult
"banana" | "ana" | 1 |
"banana" | "wxyz" | 0 |
입출력 예 설명
입출력 예 #1
- 문제 설명과 같습니다.
입출력 예 #2
- 문제 설명과 같습니다.
<답안>
function solution(my_string, target) {
return my_string.indexOf(target) === -1 ? 0 : 1
}
<제출답안>
function solution(my_string, target) {
return my_string.indexOf(`${target}`) !== -1? 1: 0;
}
<보충>
Q. 근데 왜 indexOf는 리터럴을 안써도 되는거지?
템플릿 리터럴을 사용하는 것은 문자열 안에 변수나 표현식을 삽입하고자 할 때 특히 유용합니다.
그러나 indexOf와 같은 메서드들이 문자열을 받아들일 때, 그것들은 이미 입력으로 주어진 값이 문자열 타입인지 아닌지에 대해 내부적으로 처리합니다. 만약 문자열이 아닌 다른 타입의 값이 주어지면, JavaScript는 해당 값을 문자열로 자동 형변환합니다.
1
2
3
|
const number = 12345;
const str = "Hello 12345!";
console.log(str.indexOf(number)); // 이 코드는 6을 출력합니다.
|
cs |
위의 코드에서 number는 숫자 타입입니다. 그러나 indexOf 메서드 내에서 이 숫자는 자동으로 문자열 "12345"로 변환됩니다. 따라서 템플릿 리터럴을 사용하여 숫자를 문자열로 변환할 필요가 없습니다.
이렇게 includes를 통해서도 문자열의 포함여부 판별이 가능하다.(계속 까먹는다.)
includes는 불리언 값으로 값을 배출하기 때문에 사용이 더 용이하다.
const solution =(my_string, target) => my_string.includes(target) ? 1 : 0