프로그래머스 크레인 인형뽑기 게임 (Java,자바)

jonghyukLee·2022년 4월 26일
0

이번에 풀어본 문제는
프로그래머스 크레인 인형뽑기 게임 입니다.

📕 문제 링크

❗️코드

class Solution {
    static List<Stack<Integer>> map;
    static Stack<Integer> basket;
    static int size;
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        size = board.length;
        map = new ArrayList<>();
        basket = new Stack<>();

        for(int i = 0; i < size; i++)
        {
            map.add(new Stack<>());
            for(int j = size-1; j >= 0; j--)
            {
                if(board[j][i] > 0) map.get(i).push(board[j][i]);
            }
        }

        for(int i : moves)
        {
            if(!map.get(i-1).isEmpty())
            {
                int next = map.get(i-1).pop();
                if(!basket.isEmpty() && basket.peek() == next)
                {
                    basket.pop();
                    answer += 2;
                }
                else basket.push(next);
            }
        }
        return answer;
    }
}

📝 풀이

moves 배열로 주어진 커맨드에 맞게 인형을 뽑아 바구니로 옮기는 게임입니다. 같은 모양의 인형이 바구니에 담겼을 때, 인형이 터지며 결괏값에 반영됩니다.
각 인덱스에서 인형을 꺼낼 때, 가장 꼭대기에 있는 인형을 낚아채야 하므로 스택 자료구조를 활용해 보았습니다. 바구니도 마찬가지로 가장 위에있는 인형과 비교해야하므로 스택을 사용합니다. 각 스택이 비어있는지 확인하면서 값을 갱신해 나가면 해결할 수 있습니다.

📜 후기

게임이라 생각하고 푸니까 조금 재밌게 풀었던 것 같습니다. 대놓고 스택 구조가 보여서 조금 간단하게 풀 수 있었습니다.

profile
머무르지 않기!

0개의 댓글