December 08, 2020
function solution(board, moves) {
const _board = Array(board.length)
.fill(null)
.map(() => Array())
const stack = Array()
let result = 0
board.reverse().forEach(line => {
line.forEach((element, idx) => {
if (element !== 0) {
_board[idx].push(element)
}
})
})
moves.forEach(x => {
const pop = _board[x - 1].pop()
if (pop) {
if (pop === stack[stack.length - 1]) {
stack.pop()
result += 2
} else stack.push(pop)
}
})
return result
}
첫 풀이 | 베스트 풀이 | 개선된 풀이 |
---|---|---|
0.27ms | 0.19ms | 0.18ms |
0.28ms | 0.19ms | 0.12ms |
0.16ms | 0.20ms | 0.17ms |
0.27ms | 0.21ms | 0.59ms |
0.24ms | 0.22ms | 0.16ms |
0.21ms | 0.27ms | 0.18ms |
0.81ms | 0.43ms | 0.15ms |
0.58ms | 0.43ms | 0.32ms |
0.92ms | 0.46ms | 0.33ms |
0.64ms | 0.47ms | 0.32ms |
0.94ms | 0.63ms | 0.42ms |
보드의 인형들을 2차원 배열에 스택한다
moves
에 따라 인형들을 pop하여 다른 배열에 스택한다.stack
을 반복순회한다.
-1
로 변경한다.순서 3에서 인형을 비교하지 않고 전부 다 쌓은 후에 삭제를 하는 방식
현재 빈배열에서 pop을 하는 경우를 막고 있는데 JS는 빈배열에 pop을 했을 때 에러가 나는 것이 아니라 undefined
를 뱉는다.
undefined
를 검사해서 하는 것이 로직이 간단해질 듯사용하는 변수 및 자료형을 상위로 옮기는게 좋은가 아니면 사용하는 곳에 선언하는 것이 좋을까?