숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
t를 p의 길이만큼 분해 조합 하여 배열을 만든다.
배열의 요소와 p를 비교하며 작거나 같을때 count를 올려주고 count를 리턴!
newArr 식별자를 가진 빈배열을 선언한뒤 t의 값을 p의 길이 조건에 맞게 조합하여 빈배열에 push해준다.
또 다른 resultArr 식별자를 가진 빈배열을 선언한뒤 위의 배열의 요소중 p길이와 같지 않은 요소들을 삭제하고 resultArr에 push해준다.
resultArr의 요소를 p의 길이보다 작거나 같을때 count++을 해준다.
이후 count 리턴!
function solution(t, p) {
const newArr = [];
let count = 0;
let numStr = ''
let len = p.length;
for(let i = 0; i < t.length; i++){
numStr = t[i] + t.slice(i + 1, i + len);
newArr.push(numStr);
}
const resultArr = [];
for(let i = 0; i < newArr.length; i++){
if(newArr[i].length === len){
resultArr.push(newArr[i]);
}
}
for(let i = 0; i < resultArr.length; i++){
if(Number(newArr[i]) <= Number(p)){
count++;
}
}
return count;
}
반복문 하나에서 초기값 0으로 두고 for문의 조건식을 쓸떼없이 반복하지 않도록
i <= t.length - p.length
로 둔다. -> 이러면 처음에 짯던 코드에서 p의 길이와 같지 않은 요소를 삭제할 필요가 없어진다. p의 길이와 같은 요소로만 뽑아내기 때문이다.
function solution(t, p) {
let count = 0;
for(let i = 0; i <= t.length - p.length; i++){
let num = t.slice(i, i + p.length);
if(Number(num) <= Number(p)){
count++;
}
}
return count;
}