티스토리 뷰

 

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

문제를 살펴보면 위에서부터 쌓고 위에서부터 없어지는 걸 확인하면 Queue 자료구조를 떠올렸다.

 

그리고 크레인으로 뽑은 인형을 넣는 바구니는 Stack 자료구조로 만들었다.

 

import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Map<Integer, Queue<Integer>> map = new HashMap<>();
        Stack<Integer> stack = new Stack<>();

        for(int i = 0;i<board.length;i++) {
            map.put(i+1,new LinkedList<>());
        }

        for(int i = 0;i<board.length;i++) {
            for(int j =0;j<board[i].length;j++){
                System.out.print(board[i][j] + " ");
                if(board[i][j] == 0) {
                    continue;
                }
                map.get(j+1).add(board[i][j]);
            }
            System.out.println();
        }

        for(int move : moves) {
            if(map.get(move).isEmpty()) {
                continue;
            }
            int doll = map.get(move).poll();
            if(!stack.isEmpty() && stack.peek() == doll) {
                answer += 2;
                stack.pop();
                continue;
            }

            stack.push(doll);

        }
        return answer;
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함