티스토리 뷰

import java.util.Stack;

class Solution {
   public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> basket = new Stack<Integer>();

        for (int move : moves) {
            for (int i = 0; i < board.length; i++) {
                if (board[i][move-1] != 0) {
                    if (basket.isEmpty() || basket.peek() != board[i][move-1]) {
                        basket.push(board[i][move-1]);
                    } else if (basket.peek() == board[i][move-1]) {
                        basket.pop();
                        answer += 2;
                    }
                    board[i][move-1] = 0;
                    break;
                }
            }
        }
        
        return answer;
    }
}

- 성공

 

- 인형을 담는 방식을 보고 스택을 사용해야겠다고 생각

- 인형뽑기 기계에서 0이 아닌 수를 위에서부터 찾기 (크레인이 위에서 부터 인형을 뽑아가니까)

- 바구니가 비어있거나 바구니의 제일 위에 있는값이 방금 뽑은 인형과 같지 않다면 바구니에 넣기

- 만약에 바구니의 맨 위에 있는 값이 뽑은 인형값과 같다면 바구니에서 인형을 꺼내고 정답에 +2

- 기계에서 인형을 꺼냇으면 0으로 만들어주고 인형을 계속 꺼낼 수도 있으니 break;