[algorithm / programmers]크레인 인형뽑기 게임

stella·2020년 6월 8일

algorithm

목록 보기
1/7
post-thumbnail

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

크레인 인형뽑기 게임

문제

크레인 인형뽑기 게임

풀이

function solution(board, moves) {   
    let answer = 0;
    let box = [];
    
    for(let i = 0, len = moves.length; i<len; i++){
        const col = moves[i] -1;
        for(let row = 0, rowLen = board.length; row < rowLen; row++){
            const doll = board[row][col];
            if(doll === 0) continue;
            if(doll === box[box.length-1]){
                answer = answer + 2;
                box.pop();
            }else{
                box.push(doll)
            }
            board[row][col] = 0;
            break;
        }
    }
       
    return answer;
    
}

해설

매개변수

  • 게임 화면의 격자의 상태가 담긴 2차원 배열 board
  • 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves
  1. 일단 인형을 담을 박스를 한통 준비한다. (box)
  2. 움직임 만큼 보드 검사를 시작합니다.(for 1level)
  3. 인형뽑기 기계를 조작한 하나의 움직임은 곧 열을 넘나드는 것 (따라서 col의 인덱스)
  4. 해당 좌표에 인형이 없으면(0이면) 더 아래 칸에 담겨있겠지 이동 (for 2level)
  5. 인형을 만나면 박스에 마지막으로 담긴 인형이랑 같은지 확인해봅니다.
    (if)같으면 답변카운트를 2개 올리고, 박스에서도 뽑아내서 없애버립니다.
    (else)다르면 박스에 그냥 담습니다.
  6. 아까 뽑아낸 자리에 인형이 없다고 0을 넣어줍니다.
  7. 한 움직임에 대한 결과가 끝났습니다. 포문을 더 돌필요없습니다. (break)

생각

  • 그림에 낚여서 board에 들어오는 배열이 세로라고 생각했다 덕분에 한참 헤맴 (문제를 잘 읽자)
profile
겔름뱅이

0개의 댓글