코딩테스트 연습
leetcode 코딩테스트 연습 - 2624. Snail Traversal (JavaScript)
citron031
2023. 8. 1. 23:17
이번 문제는 Array의 prototype에 고차 함수를 직접 구현하는 문제였다.
this가 호출한 배열을 가르킨다는 것을 이번 문제를 해결하면서 처음 알게되어 의미가 깊다.
/**
* @param {number} rowsCount
* @param {number} colsCount
* @return {Array<Array<number>>}
*/
Array.prototype.snail = function(rowsCount, colsCount) {
if(rowsCount * colsCount !== this.length) {
return [];
}
const result = [];
for(let i = 0; i < rowsCount; i++) {
result.push([]);
}
let row = 0;
let isAscending = true;
for(let i = 0; i < this.length; i++) {
result[row].push(this[i]);
if(isAscending) {
if(row + 1 === rowsCount) {
isAscending = false;
} else {
row += 1;
}
} else {
if(row === 0) {
isAscending = true;
} else {
row -= 1;
}
}
}
return result;
}
/**
* const arr = [1,2,3,4];
* arr.snail(1,4); // [[1,2,3,4]]
*/
문제 자체는 그래도 손쉽게 해결할 수 있었다.
이중 for문을 사용하지 않고 일차원 배열을 순회하면서 변수로 조건을 주어 문제를 해결하였다.