✔️

답안

// 기본 입력부분입니다 // 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));