๐ง codingtest/javascript 100์
๋ฌธ์ 95. ๋์ฅ์ฐ๊ธฐ
awesomeyelim
2022. 4. 28. 08:31
728x90
- ๋น ์ข ์ด์ stemp ๋ชจ์์ผ๋ก ์๊ธด ๋์ฅ์ 90º ๋ก ํ์ ํ๋ฉฐ ์ฐ๋๋ค. ๋์ฅ์ ํฌ๊ธฐ๋ N*N ํฌ๊ธฐ, ๋์ฅ์ด ์ฐํ๋ ๋ถ๋ถ์ 1์ด์์ ์์ฐ์์ ๋์ฅ์ด ์ฐํ์ง ์๋ 0์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์.
- ์ข ์ด์ ์ฐํ ๋์ฅํ์๋ฅผ ํํํ stmp ๋ฐฐ์ด๊ณผ ์ผ๋งํผ ํ์ ํ ๊ฒ์ธ์ง ์๋ ค์ฃผ๋ ํ์ ์ k๋ฅผ ์ ๋ ฅ๋ฐ์์๋
๊ฐ ์์น์์ ๋ช๋ฒ ๋์ฅ์ด ์ฐํ๋์ง ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ์์ค
// ์
๋ ฅ
๋์ฅ = [
[1, 1, 1, 2],
[2, 0, 0, 0],
[1, 1, 1, 1],
[0, 0, 0, 0],
];
ํ์ = 1;
// ์ถ๋ ฅ
[
[1, 2, 3, 3],
[2, 1, 0, 1],
[1, 2, 1, 2],
[0, 1, 0, 2],
];
๋ฏธ๋ฆฌ ์๊ฐํด ๋ด์ผํ ๊ฒ
- ์ด๋ค ๊ท์น์ผ๋ก ๋๋์ง ์๊ฐํด๋ณธ๋ค.
i,j -> j,N-1-i
0,0 -> 0,3
0,1 -> 1,3
0,2 -> 2,3
0,3 -> 3,3
1,0 -> 0,2
1,1 -> 1,2
1,2 -> 2,2
1,3 -> 3,2
2,0 -> 0,1
2,1 -> 1,1
2,2 -> 2,1
2,3 -> 3,1
3,0 -> 0,0
3,1 -> 1,0
3,2 -> 2,0
3,3 -> 3,0
๋ต
let stmp = [
[1, 1, 1, 2],
[2, 0, 0, 0],
[1, 1, 1, 1],
[0, 0, 0, 0],
];
let k = 1;
function sol(stmp, k) {
let n = stmp.length;
let p = [];
for (let i = 0; i < n; i++) {
p.push(Array(n).fill(0)); //0์ผ๋ก ์ฑ์์ง n*n ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค
}
// console.log(p)
// ํ์ ์ํค๊ธฐ ์ ํ๋ฒ ์ฐ์ด์ฃผ๊ธฐ
p = sum_matrix(p, stmp);
for (let i = 0; i < k; i++) {
stmp = rotate(stmp);
p = sum_matrix(p, stmp);
}
return p;
}
// ํ์
function rotate(stmp) {
let n = stmp.length;
let rot = [];
for (let i = 0; i < n; i++) {
rot.push(Array(n).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) {
let n = stmp.length;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
p[i][j] += stmp[i][j];
}
}
return p;
}
console.log(sol(stmp, k));