크기가 작은 부분문자열, Javascript

cptkuk91·2023년 2월 19일
1

Algorithm

목록 보기
143/161
post-custom-banner

문제

https://school.programmers.co.kr/learn/courses/30/lessons/147355?language=javascript

코드

function solution(t, p) {
    let result = 0;
    
    const tmp = [];
    
    for(let i = 0; i < t.length - p.length + 1; i++){
    	tmp.push(t.substring(i, i + p.length));
    }
    
    for(let j = 0; j < tmp.length; j++){
    	if(parseInt(tmp[j]) <= parseInt(p)){
        	result++
        }
    }
    return result;
}

풀이

코드 풀이에 앞서, substring에 대해 설명드리겠습니다. 문자열을(시작값, 끝값)으로 자르는 기능입니다. 따라서 반드시 시작값과 끝값을 지정해야 합니다. (끝값을 설정하지 않을 경우 마지막 문자열까지 return합니다. 문제 요구사항에 맞춰 우리는 끝값을 설정해야합니다.

let str = "Hello, World!";
let substring = str.substring(7, 12);
console.log(substring);

우선 임시 배열을 하나 만들어놓고, for문을 돌려 p길이만큼의 숫자를 모두 tmp에 넣어줍니다. for문에 t.length - p.length + 1의 경우 아래 부분의 설명을 읽어보시면 더 정확하게 이해할 수 있습니다. for문이 끝나면 우리가 원하는 숫자는 모두 tmp안에 들어가게 됩니다. 이후 새로운 for문을 만들어 tmp에 들어 있는 숫자와 p라는 숫자의 값을 비교하고, 만얀 p값보다 작거나 같은 숫자가 있다면 result++을 통해 문제 요구사항에 맞춰 값을 구할 수 있습니다.

// length = 7 - 3 + 1 = 5

//for(let i = 0; i < t.length - p.length + 1; i++){
        // tmp.push(t.substring(i, i + p.length));
        // 0 + 3
        // 1 + 4
        // 2 + 5
        // 3 + 6
        // 4 + 7 위 length 5로 인해 4에서 끝난다. 4까지만 해도 1번 case값을 확인할 수 있다.
    //}

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글