[JS] Programmers 147355 크기가 작은 부분문자열

서연주·2023년 7월 5일
0

Algorithm

목록 보기
13/25

'크기가 작은 부분문자열'

Programmers '크기가 작은 부분문자열' 문제 보러가기

풀이 코드

문자열 t를 문자열 p의 길이만큼 잘라가며 차례로 비교했다.

function solution(t, p) {
    let cnt =0;
    for(let i=0;i<=t.length-p.length;i++){
        let temp = t.substr(i,p.length);
        if(Number(temp) <= Number(p)){
            cnt++;
        }
    }
    return cnt;
}

substr()

; 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환한다.
str.substr(start[, length])

  • start >= 0 이고 start >= 문자열 전체 길이
    ➡️ 빈 문자열을 반환한다
  • start < 0 이라면 문자열 끝에서 start 숫자 만큼 뺀 곳에서 시작한다.
  • length <=0
    ➡️ 빈 문자열을 반환한다
  • length가 생략되면 문자열의 끝까지 추출하여 반환한다

개선하기

*조수원 님의 코드를 참고하였습니다.
1. substr() 대신 slice()
MDN에 따르면 현재 String.prototype.substr()이 웹 표준에서 제거된 것은 아니나 새로운 ECMAScript 코드를 작성할 때 해당 메서드의 사용이나 존재를 가정해서는 안된다고 한다.

*slice()
; 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환한다.
arr.slice([begin[, end]])

  • begin < 0는 끝에서부터의 길이를 나타낸다.
  • begin > 배열의 길이
    ➡️ 빈 배열을 반환한다
  • end < 0 은 끝에서부터의 길이를 나타낸다.
  • end가 생략되거나 end > 배열의 길이
    ➡️ 배열의 끝까지(arr.length) 추출한다

2.+를 사용한 숫자 변환
javascript에서 숫자로만 이루어진 문자열 앞에 +를 붙이면 숫자로 변환된다.

function solution(t, p) {
    let cnt =0;
    for(let i=0;i<=t.length-p.length;i++){
        let temp = t.slice(i,i+p.length);
        if(+p >= +temp){
            cnt++;
        }
    }
    return cnt;
}

참고 자료

profile
pizz@ttang

0개의 댓글