728x90
stack 구조로 인형을 넣을 배열은 하나 만들고, 판을 돌려서 인형을 뺄때 pop으로 뺴기 편한 구조로 만들었다.
1,2번 테케가 잘 통과가 안되었는데 stack이 비어있는 경우를 예외처리해줌으로 이를 해결했다.
function solution(board, moves) {
const stack = []
const newBoard = board.reduce(
(result, row) => row.map((_, i) => row[i] ? [ row[i] , ...(result[i] || []) ] : []),[])
return moves.reduce((a,c) => {
const doll = newBoard[c-1].pop()
if (doll === stack[stack.length-1] && stack.length) {
stack.pop()
return a+2
}
if (doll) stack.push(doll)
return a
},0)
}
reduce와 map을 활용해서 보드를 바꾸는 로직을 이번에 공부했는데 독특하니 조금 멋있었다.
이를 약간 변형해서 0인경우에는 아예 생략하도록 로직을 변경해보았다.
728x90
'FrontEnd > 프로그래머스' 카테고리의 다른 글
[JS] 체육복 (0) | 2023.04.25 |
---|---|
[JS] 실패율 (0) | 2023.04.24 |
[JS] 키패드누르기 (0) | 2023.04.21 |
[JS] 두개 뽑아서 더하기 (0) | 2023.04.20 |
[JS] 신규 아이디 추천 (0) | 2023.04.20 |