FrontEnd/프로그래머스

[JS] 크레인 인형뽑기

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