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

강신찬·2023년 10월 16일
0
import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Map<Integer, Stack<Integer>> map = new HashMap<>();
        int idx = 1;
        for(int i = 0; i<board[0].length; i++) {
             Stack<Integer> stack = new Stack<>();      
            for(int j = board.length-1; j>=0; j--) {
                if(board[j][i] == 0) {
                    continue;
                }
                stack.add(board[j][i]);
            }
             // System.out.println(stack);
            map.put(idx++, stack);
            // System.out.println(map);
        }
        Stack<Integer> answerStack = new Stack<>();
        // System.out.println(map.get(6).pop());
        for(int i =0; i<moves.length; i++) {
            if(map.get(moves[i]).isEmpty()) {
                continue;
            }else {
                Integer movesPop = map.get(moves[i]).pop();
                if(!answerStack.isEmpty()) {
                    if(answerStack.peek() == movesPop) {
                        answerStack.pop();
                        answer += 2;
                    }else {
                        answerStack.add(movesPop);
                    }
                }else {
                    answerStack.add(movesPop);
                }
            }
            
        }
        return answer;
    }
}
  • 거의 2주만에 온것 같습니다.
  • 2주동안 고민한 문제는 아니고 한 번 트라이했다가 여러 사정으로 다시 도전했는데 성공했네요
  • 인형뽑기 게임로직입니다. 먼저 주어지는 인형이들어있는 배열을 스텍으로 바꾸어주었습니다. 안들어있는 0개는 넣지 않아서팝과 픽을 이용할 수 있도록 했습니다.
  • 꺼내는 인형의 배열로 반복문을 돌려서 인형을 꺼낼수 있으면 꺼내고 꺼낸다음에는 이미 꺼낸 정답배열의 맨 위 인형과 비교해서 같으면 두개다 없애버리는 로직을 구현했습니다.
  • 스텍을 활용하는 문제가 아닐까 싶습니다. 재밌었네요. 끝.
profile
꾸준히 공부하는 풀스텍 개발자

0개의 댓글