작성
·
178
0
안녕하세요. 저는 2차원 배열을 순회하면서 0의 개수를 센 최대 높이 배열을 만든 다음에 스택 로직을 적용하여 아래와 같은 방법으로 작성했습니다.
혹시 이 코드에 대해서 피드백 해주실 수 있을까요? 엣지 케이스가 있을 수 있을까요?
function solution(board, moves) {
let answer = 0;
const len = board.length;
const maxHeights = new Array(len).fill(0);
const stack = [];
for (let row of board) {
for (let n = 0; n < len; n++) {
if (row[n] === 0) {
maxHeights[n]++;
}
}
}
for (let n of moves) {
let idx = n - 1;
let mh = maxHeights[idx];
if (mh !== len) {
let selectedVal = board[mh][idx];
let lastValInStack = stack[stack.length - 1];
if (lastValInStack === selectedVal) {
stack.pop();
answer += 2;
} else {
stack.push(selectedVal);
}
maxHeights[idx]++;
}
}
return answer;
}
solution([[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]], [1,5,3,5,1,2,1,4]);