*Udemy의 "The Coding Interview Bootcamp: Algorithms + Data Structures" 강의에서 학습한 내용을 정리한 포스팅입니다.
*https://soldonii.github.io에서 작성한 글을 티스토리로 옮겨온 포스팅입니다.
*자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :)
지문
// Given an array and chunk size, divide the array into many subarrays
// where each subarray is of length size
// --- Examples
// chunk([1, 2, 3, 4], 2) --> [[ 1, 2], [3, 4]]
// chunk([1, 2, 3, 4, 5], 2) --> [[ 1, 2], [3, 4], [5]]
// chunk([1, 2, 3, 4, 5, 6, 7, 8], 3) --> [[ 1, 2, 3], [4, 5, 6], [7, 8]]
// chunk([1, 2, 3, 4, 5], 4) --> [[ 1, 2, 3, 4], [5]]
// chunk([1, 2, 3, 4, 5], 10) --> [[ 1, 2, 3, 4, 5]]
1번 풀이
1. 최종 결과물이 될 result 빈배열을 만든다.
2. 원본 배열을 for loop으로 반복하면서, result의 마지막 element를 last변수에 담는다.
3. last 가 존재하지 않거나 길이가 size 보다 작으면, 새로운 chunk가 필요하다는 의미이므로 현재 element를 배열에 담아서 result 에 push해준다.
4. 그렇지 않을 경우는, chunk가 존재한다는 의미이므로 last chunk에 현재 element만 push해준다.
function chunk(array, size) {
let result = [];
for (let i of array) {
let last = result[result.length - 1];
if (!last || last.length === size) {
result.push([i]);
} else {
last.push(i);
}
}
}
2번 풀이 : .slice()
for loop을 통해 원본 배열의 앞에서부터 size만큼 slice한 후 result 에 push한 후 return한다.
function chunk(array, size) {
let result = [];
for (let i = 0; i < array.length; i += size) {
result.push(array.slice(i, i + size));
}
return result;
}
'Javascript 공부 > 알고리즘 풀이' 카테고리의 다른 글
자바스크립트 알고리즘(6) - reverseInt (0) | 2019.08.26 |
---|---|
자바스크립트 알고리즘(5) - palindrome (0) | 2019.08.26 |
자바스크립트 알고리즘(4) - maxChar (0) | 2019.08.26 |
자바스크립트 알고리즘(3) - fizzbuzz (0) | 2019.08.26 |
자바스크립트 알고리즘(1) - anagram (0) | 2019.08.26 |
댓글