[프로그래머스] LV1. 크레인 인형뽑기 게임

인스·2025년 6월 28일

💡 풀이

  • 해당 칸이 0이 아니면
    -stack이 비어 있지 않고 맨 위의 인형과 같으면 pop 후 +2
    -맨 위의 인형과 다르면 추가 add
  • 인형을 뽑고 0으로 리셋 후 해당 위치는 다 뽑았으므로 break
    (😓 처음에 break 깜빡해서 헤맸음)
import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        
        Stack<Integer> stack = new Stack<>();
        
        int n = board.length;
        for(int move : moves){
            for(int i = 0; i<n; i++){
                int check = board[i][move-1];
                // 해당 칸이 0이 아니면
                if (check != 0) {
                    // stack이 비어 있지 않고 맨 위에 인형이 같으면 pop하고 +2
                    if (!stack.isEmpty() && stack.peek() == check) {
                        stack.pop();
                        answer+=2;
                    } else {  // 같은 인형이 stack에 없으면 add
                        stack.add(check);
                    }
                    // 인형 뽑기 후 0으로 리셋
                    board[i][move-1] = 0;
                    break;
                }
            }
        }
        return answer;
    }
}
profile
💻💡👻

0개의 댓글