기본적으로 스택과 큐에 대한 알고리즘은 알고 있었기 때문에 큰 어려움은 없었지만, 코플릿에서 아예 코드를 짜야할 때는 약간의 어려움이 있었다.

스크린샷 2022-09-30 오전 12.05.38.png

큐와 관련된 문제에서 위와 같이 코드를 짰지만 레퍼런스 코드는 약간 방식이 달랐다. 전체적인 구조는 비슷하지만, 사용한 메소드가 달라서 비교를 해볼까한다.

function paveBox(boxes) {
    let answer = [];
    
    // boxes 배열이 0보다 클 때까지 반복합니다.
    while(boxes.length > 0){
        let finishIndex = boxes.findIndex(fn => boxes[0] < fn);
        
        if(finishIndex === -1){
            // 만약 찾지 못했다면 answer에 boxes 배열의 길이를 넣은 후, boxes 내부의 요소를 전부 삭제합니다.
            answer.push(boxes.length);
            boxes.splice(0, boxes.length);

        } else {
            // 만약 찾았다면, 해당 인덱스를 answer에 넣고, boxes에서 그만큼 제외합니다.
            answer.push(finishIndex);
            boxes.splice(0, finishIndex);
        }
    }

    // 결과물을 반환합니다.
    return Math.max(...answer);
}

위와 같은데 위 코드를 해석하면서 헷갈렸던 부분을 검색을 통해 해결할 수 있었다.

우선 splice 사용시 매개변수가(매개변수 개수에 따라 다르지만) splice(시작 인덱스, 제거할 요소 개수) 와 같다는 것을 알 수 있었다.

뿐만 아니라 findIndex 메소드의 기능 또한 알 수 있었다.