Open dlehdanakf opened 3 years ago
const make = (target, length, sum = 0, trace = []) => {
if(sum === target && trace.length === length) {
console.log(trace);
}
if(trace.length >= length) {
return;
}
const last = trace[trace.length - 1] || 1;
const remain = target - sum;
for(let i = last; i <= remain; i++) {
make(target, length, sum + i, [...trace, i]);
}
};
const transpose = matrix => {
const r = matrix.length,
c = matrix[0].length,
results = new Array(c).fill(undefined).map(_ => new Array(r));
matrix.forEach((m, i) => m.forEach((n, j) => results[j][i] = n));
return results;
};
matrix
변수를 인자로 받아서 행 개수와 열 개수를 구한다. 이 때 matrix
의 열 개수는 모든 행에 대해 동일해야한다.Array.prototype.forEach
메소드를 돌면서 [i][j]
를 [j][i]
로 바꿔버려서 대입한다.
배열 만들기
Array.prototype.push
메소드는 실행하는데 시간이 다소 소비되는 메소드이다.Array.prototype.fill
메소드를 사용하는게 훨씬 빠르다는 것을 확인할 수 있다.new Map()
,new Set()
같은 인스턴스로 초기화할 때는 fill 메소드를 사용할 수 없고 map 메소드가 들어갈 경우 시간은 비슷해진다.new Map()
자체가 느린걸 수도 있다...new Map()
을 제거하고{ }
Object를 생성하는 코드로 바꾼 뒤 실행했더니 한결 빨라졌다.행렬 회전시키기