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

큐와 관련된 문제에서 위와 같이 코드를 짰지만 레퍼런스 코드는 약간 방식이 달랐다. 전체적인 구조는 비슷하지만, 사용한 메소드가 달라서 비교를 해볼까한다.
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 메소드의 기능 또한 알 수 있었다.