끄적끄적 코딩
article thumbnail

2019 카카오 개발자 겨울 인턴십

인형뽑기 게임을 실행했을 때 총 몇개의 캐릭터가 없어지는지 구하는 문제입니다.

board배열에서 캐릭터를 뽑습니다. (해당 캐릭터는 board배열에서 지워줍니다.)
뽑힌 캐릭터를 배열에 넣고 이전 값과 비교해서 같으면 두개를 지우면서 결과값에 2를 더해줍니다.

function solution(board, moves) {
    let answer = 0; 
    let stack = [];
    let index = 1;
    let x, y;
    let height = [];
        
    for(let i=0; i<board[0].length; ++i){
        height[i] = 0;
    }
    stack[0] = 0;
    
    for(let i=0; i<board.length; ++i){
        for(let j=0; j<board[i].length; ++j){
            if(board[i][j] !== 0){
                height[j] = Math.max(height[j], board.length - i);
            }
        }
    }
    
    for(let i=0; i<moves.length; ++i){
        x = moves[i] - 1;
        y = board.length - height[x];
        if(board[y][x] === 0){
            continue;
        }
        if(height[x] > 1){
            --height[x];
        }
        
        stack[index] = board[y][x];
        if(stack[index] === stack[index - 1]){
            answer+=2;
            --index;
            stack = stack.slice(0, index);
        } else {
            ++index;
        }
        board[y][x] = 0;
    }
    
    return answer;
}

 

검색 태그