어레이 청킹 문제 해결
문제
배열과 크기가 주어지고 배열을 주어진 크기와 같은 길이의 더 작은 하위 배열로 나누라는 요청을 받습니다.
전.
chunk([1, 2, 3, 4, 5, 6], 2)
//Output will be [[1, 2], [3, 4], [5, 6]]
chunk([1, 2, 3, 4, 5], 3)
//Output will be [[1, 2, 3], [4, 5]]
// chunk([1, 2, 3, 4, 5], 2)
//Output will be [[ 1, 2], [3, 4], [5]]
내가 지적한 한 가지 세부 사항은 그들이 우리에게 크기를 줄 때 우리가 만들고자 하는 배열의 수가 아니라 원하는 하위 배열의 길이라는 것입니다. 내가 문제를 읽을 때 가치를 발견하는 것은 이와 같은 세부 사항입니다. 또한 설명을 위한 샘플 사례를 갖는 것도 도움이 됩니다.
해결책
첫 번째 단계는 문제가 정확히 무엇을 요구하는지 식별하는 것입니다. 이 경우에는 더 작은 어레이로 구성된 어레이입니다. 즉, 우리가 취할 수 있는 한 가지 접근 방식은 결국 모든 하위 배열을 보유할 빈 배열을 만드는 것입니다.
function chunk(array, size) {
const chunkedArray = [];
}
이제 설정이 완료되었으므로 원래 배열에서 작업을 수행하기 위해 루프를 작성합니다. 먼저 변수 이름을
index
로 지정할 카운터를 설정합니다.function chunk(array, size) {
const chunkedArray = [];
let index = 0;
}
다음으로 인덱스가 주어진 배열의 길이보다 작은 동안 어떤 유형의 작업을 수행한다는 while 루프를 설정합니다.
function chunk(array, size) {
const chunkedArray = [];
let index = 0;
while (index < array.length) {
//Only the first line of the while loop
}
그 다음은 첫 번째 어레이를 하위 어레이로 청크하기 시작하는 실제 작업입니다.
.slice()
방법을 사용하여 원래 배열에서 주어진 크기와 동일한 길이의 섹션을 잘라낼 수 있습니다.array.slice(index, index + size)
.slice()
메서드는 전달한 첫 번째 인수(start Index)에서 시작하고 전달한 두 번째(선택 사항) 인수에서 슬라이싱을 중지하고 end(end Index)를 포함하지 않습니다. 슬라이스에 두 번째 인수를 전달하지 않으면 첫 번째 인수에서 시작하여 배열의 끝으로 슬라이스됩니다..slice(startIndex, endIndex)
현재 코드에 있는 내용을 살펴보겠습니다.
function chunk(array, size) {
const chunkedArray = [];
let index = 0;
while (index < array.length) {
array.slice(index, index + size);
index += size;
}
}
여기서 우리는 인덱스에서 인덱스 + 크기까지 배열을 슬라이싱하고 배열의 다음 "덩어리"로 이동하기 위해 크기 값만큼 인덱스를 증가시킵니다.
이것은 지금까지는 좋지만 지금까지 그 새로운 "덩어리"는 아직 살 곳이 없습니다. 여기에서 첫 번째 단계에서 선언한 빈 배열로 돌아갑니다. 현재 비어 있는 이 배열에는 생성되는 새 청크가 포함될 것입니다.
.push()
메서드를 사용하여 해당 배열 청크를 빈 배열로 이동할 수 있습니다.function chunk(array, size) {
const chunkedArray = [];
let index = 0;
while (index < array.length) {
chunkedArray.push(array.slice(index, index + size));
index += size;
}
}
이제 while 루프가 원래 배열을 반복하면서 slice 메서드로 생성된 청크를 chunkedArray로 푸시합니다.
마지막으로 함수가 문제가 요청한 것(이 경우 더 작은 하위 배열을 포함하는 배열)을 반환하는지 확인해야 합니다.
따라서 모든 반복에 대해 chunkedArray를 반환하지 않고 최종 배열만 반환하기 때문에 while 루프 외부에서 단순히 chunkedArray를 반환합니다.
function chunk(array, size) {
const chunkedArray = [];
let index = 0;
while (index < array.length) {
chunkedArray.push(array.slice(index, index + size));
index += size;
}
return chunkedArray;
}
그러면 답변으로 하위 배열로 구성된 배열이 제공됩니다. 이 문제는 while 루프에 대한 더 많은 연습을 제공하고 유용한 슬라이스 방법을 구현했기 때문에 내 연구에 도움이 되었습니다.
자원
Stephen Grider's Algorithms and Data Structures Udemy Course
Interview Cake
Reference
이 문제에 관하여(어레이 청킹 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sfrasica/one-approach-1kfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)