[ 프로그래머스 ] #64061 : 크레인 인형뽑기 게임 - JAVA

🔗 크레인 인형뽑기 게임

문제풀이

가까운 인형을 없애는 문제이므로 stack 을 이용해 문제를 해결한다.

import java.util.Deque;
import java.util.ArrayDeque;
class Solution {
    public int solution(int[][] board, int[] moves) {
        // board : 인형 담긴 상태
        // moves : 크레인을 작동 시킨 위치 
        // 사라진 인형의 개수 반환

        int answer=0;
        Deque<Integer> stack=new ArrayDeque<>();

        // 크래인 작동 횟수 반복
        for(int i=0;i<moves.length;i++){
            // 작동 위치 (1부터 시작하므로 1을 뺀 index구함)
            int moveIndex=moves[i]-1; // = board의 column index

            // 해당 moveIndex에서 board의 행 크기만큼 반복
            // 상단 부터 탐색
            for(int j=0;j<board.length;j++){

                // 인형
                int doll=board[j][moveIndex];

                if(doll==0) continue; // 0은 인형이 없는 것
                else{ // 인형이 잡혔다면

                    // 잡혔으므로 0으로 설정
                    board[j][moveIndex]=0;

                    // stack에 있는 것과 같으면 인형 터트리기
                    if(!stack.isEmpty()&&stack.peek()==doll){
                        stack.pop();
                        answer+=2;
                    }else{
                        // 없으면 담기
                        stack.push(doll);
                    }
                    break;
                }
            }
        }
        return answer;
    }
}