Programers Js - 크기가 작은 부분 문자열

박요셉·2024년 5월 18일
1

Programmers.Js

목록 보기
12/26
post-custom-banner

문자열로 주어진 값을 이용해 반복을 돌아야 하겠는데? -> split 메서드 사용

순회를 돌면서 특정 부분만 추출해내서 비교를 하면 쉽지 않을까? 그런 메서드가 무엇이 있지 splice? slice => 얕은 복사를 통한 배열을 반환해주는 slice 메서드를 사용

이후론 그저 생각의 영역이였기에 나름 쉽게 로직을 구성하게 되었다. 그러나!
삼항연산자의 실행 부분의 p + 1부분을 처음엔 null로 주었다가 null의 값을 비교하게 되니 NaN값이 나오게되고 그렇게되어 aa <= Number(p)의 연산이 정상적으로 작동하지 않게되어 살짝 골머리를 앓다 해결하게 됬음.

주석부분은 처음에 로직을 작성한 부분이고 이후에 내가 줄인 부분을 적어놓은 것.

function solution(t, p) {
    // t,p = int[]
    // 반복문 중첩
    let answer = 0;
    const tArray = t.split('')
//     tArray.map((item,idx) =>  {
//         const aa = idx <= tArray.length-p.length ? Number(tArray.slice(idx,idx + p.length).join('')) :p + 1
//     return aa <= Number(p) ? answer += 1 : null
// })
    
    tArray.map((item,idx) => (idx <= tArray.length - p.length ? Number(tArray.slice(idx,idx + p.length).join('')) : p+ 1) <= Number(p) ? answer += 1 : null) 
    
    
    return answer;
}

다른 사람들은 어떻게 풀었을지 기대하며 창을 열었더니 아래와 같은 로직이 있더라.

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

고차함수의 사용을 연습하기위해 최대한 for문이 아닌 함수를 사용하여 푸려고 노력하고있기에 for문을 써도는 되지만 지양하고있다.

위의 코드를 보니 가시성이 뛰어나 나중에 다른 분들과 협업을 하게 된다면 위와같은 코드를 작성할 듯 싶다라는 생각이 들면서 아..이번엔 로직이 매우 유사하다!라는 뿌듯함이 있다.

1단계에서 신나서 방방대는 중 ㅋ;;

profile
개발자 지망생
post-custom-banner

0개의 댓글