Categories

  • Datastructure

1. 자료 구조

board, moves: 배열

list : 뽑아온 인형을 담을 공간, 스택

2. 내가 문제 해결한 방식

1) moves-1에 해당하는 열에 해당하는 0~ N-1까지 행을 조회하며 0이 아닌 숫자를 찾는다

2) 0이 아니면 list 스택에서 인형을 꺼내와서 비교를 한다

3) 같으면 스택에서 인형을 빼고 +2를 해준다(스택에 있는 인형1개, 새로 들어올 인형1개 = 2개)

4) 다르면 스택에 그냥 집어 넣는다

5) 2번 경우에 들어오면 무조건 break로 해서 행 조회를 중지한다.(인형은 반드시 표면에 있는 1개의 인형만 뽑을 수 있기 때문)

3. 내가 제출한 방식

function solution(board, moves) {
    let list = [];
    let answer=0;
    let m = 0;
    let column =0;

    for(let m = 0 ; m < moves.length ; m++){
        column = moves[m]-1;      
        for(let i = 0 ; i < board.length ; i++){        
            if(board[i][column] !== 0 ){   
                if(board[i][column]==list[list.length - 1]){
                    answer = answer+2;
                    list.pop();   
                }
                else list.push(board[i][column]);
             board[i][column] = 0;
             break;
            }     
        }
      }
return answer;
}