자물쇠와 열쇠 정답 | | codeisneverodd
Closed this issue · 0 comments
codeisneverodd commented
제출한 정답
function solution(key, lock) {
const N = lock.length;
const M = key.length;
const extendedLock = (() => {
const arr = Array.from({ length: N + 2 * M }, () =>
Array(N + 2 * M).fill(0)
);
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
arr[M + i][M + j] = lock[i][j];
}
}
return arr;
})();
const keys = (() => {
const rotate = (arr) =>
arr[0].map((_, colI) => arr.map((row) => row[colI]).reverse());
const M = key.length;
let result = [key];
for (let i = 0; i < 3; i++) {
result.push(rotate(result[result.length - 1]));
}
return result;
})();
const check = (key, startIndex) => {
const result = JSON.parse(JSON.stringify(extendedLock));
const [x, y] = startIndex;
for (let i = 0; i < M; i++) {
for (let j = 0; j < M; j++) {
result[x + i][y + j] += key[i][j];
}
}
for (let i = M; i < M + N; i++) {
for (let j = M; j < M + N; j++) {
if (result[i][j] !== 1) return false;
}
}
return true;
};
for (let i = 0; i < N + M; i++) {
for (let j = 0; j < N + M; j++) {
if (keys.some((k) => check(k, [i, j]))) return true;
}
}
return false;
}풀이 데이터
{
"probId": "60059",
"author": "codeisneverodd",
"lang": "JavaScript"
}