[프로그래머스] 크레인 인형뽑기 게임

mandarinduk·2021년 4월 19일
0
function solution(board, moves) {
    let count = 0;
    const basket = [];
    
    moves.forEach((move) => {
      	// move에 해당하는 아이템의 idx
        const itemIdx = move - 1;
      	// board 배열에서 해당 아이템을 순회
        for (let i = 0; i < board.length; i++) {
            // 0일 경우 continue
            if (!board[i][itemIdx]) continue;
          
            // basket의 마지막 아이템과 같을 경우 사라지면서
            // 사라진 아이템의 count를 + 2
            if (basket.length && basket[basket.length-1] === board[i][itemIdx]) {
                board[i][itemIdx] = 0;
                count += 2;
                basket.pop();
                break;
              
            // basket의 마지막 아이템과 다를 경우 basket에 Push
            } else {
                basket.push(board[i][itemIdx]);
                board[i][itemIdx] = 0;
                break;
            };
        };
    });
    
    return count;
}
  • board 배열에서 move에 해당하는 아이템을 순회하며 값을 찾습니다.
  • 해당 아이템이 0일 경우는 아무 일도 일어나지 않기 때문에 continue를 합니다.
  • basket 배열의 마지막 아이템과 해당 아이템이 같다면 basket에서 사라지면서 count를 +2 해줍니다.
  • 같지 않다면 basket 배열에 해당 아이템을 넣어줍니다.
  • board 배열에서 뽑힌 아이템은 0으로 초기화를 하여 뽑힌 것으로 처리 해줍니다.
  • filter 메소드를 활용하여 0인 아이템을 제거한 배열을 만들고, 해당 배열을 순회했으면 더 효율적이였을 것 같습니다..!
profile
front-end 신입 개발자

0개의 댓글