// 기본 입력부분입니다
// N, stmp, k를 입력받습니다.
let N = parseInt(prompt('도장의 크기를 입력하세요.'), 10);
let stmp = [];
// stmp = [
// [1,1,1,2],
// [2,0,0,0],
// [1,1,1,1],
// [0,0,0,0]];
for (let i = 0; i < N; i++){
let tmp = prompt('도장을 입력하세요').split(' ').map(x => parseInt(x, 10));
stmp.push(tmp);
}
const k = parseInt(prompt('회전수를 입력하세요'), 10);
function solution(stmp,n) {
N = stmp.length;
// 0으로 만들어진 배열 생성
let p = [];
for(let i = 0; i < N; i++){
p.push(Array(N).fill(0));
}
// 회전시키기 전 최초 1번찍어주기
p = sum_matrix(p, stmp);
//회전시키며 도장찍기
for(let i = 0; i < n; i++) {
stmp = rotate(stmp);
p = sum_matrix(p, stmp);
}
return p;
}
//배열(도장) 회전시키기
function rotate(stmp){
N = stmp.length;
let rot = [];
for(let i = 0; i < N; i++){
rot.push(Array(4).fill(0));
}
for (let i = 0; i < N; i++){
for (let j = 0; j < N; j++){
rot[j][N-1-i] = stmp[i][j];
}
}
return rot;
}
//행렬 더하기. 즉, 도장이 찍히는 정도를 더한다.
function sum_matrix(p,stmp){
for(let i = 0; i < p.length; i++){
for(let j = 0; j < p[0].length; j++){
p[i][j] += stmp[i][j];
}
}
return p;
}
console.log(solution(stmp, k));