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

2025. 7. 21. 18:10·CodingTest/Programmers

사진을 클릭하면 해당 문제로 이동

💡풀이

import java.util.ArrayDeque;
import java.util.Deque;

class Solution {
    public int solution(int[][] board, int[] moves) {
        // 각 열을 스택으로 관리하기 위한 Deque 배열
        Deque<Integer>[] stacks = new ArrayDeque[board.length];

        for(int i = 0; i < stacks.length; i++) {
            stacks[i] = new ArrayDeque<>();
        }

        // 2차원 배열 board를 각 열에 해당하는 스택으로 변환
        for(int i = board.length - 1; i >= 0; i--) {
            for(int j = 0; j < board[i].length; j++) {
                if(board[i][j] != 0) { // 인형이 있는 칸만
                    stacks[j].push(board[i][j]); // 해당 열의 스택에 추가
                }
            }
        }

        // 뽑은 인형을 담을 바구니와 사라진 인형 수
        Deque<Integer> basket = new ArrayDeque<>();
        int answer = 0;

        for(int move : moves) {
            move--; // 시작 인덱스인 0과 맞추기 위해 -1 해주기

            // 해당 열에 인형이 남아있다면
            if(!stacks[move].isEmpty()) {
                int n = stacks[move].pop(); // 인형을 하나 뽑음

                // 바구니의 맨 위 인형과 새로 뽑은 인형이 같으면
                if(!basket.isEmpty() && basket.peek() == n) {
                    basket.pop(); // 바구니 인형을 터트리고
                    answer += 2;  // 사라진 인형 2개 추가
                } else {
                    basket.push(n); // 다르면 바구니에 새로 쌓음
                }
            }
        }
        
        return answer;
    }
}

📖새로 배운 부분

💡Stack<> 이 아닌 Deque<> 로 스택을 구현한 이유는??

 

[Java, Stack] 왜 Stack이 아닌 Deque로 스택을 구현해야 할까?

Stack 클래스가 상속하고 있는 Vector가 문제가 되기 때문에 Deque 사용을 권장한다. ❌ Stack stack = new Stack();⭕ Deque stack = new ArrayDeque(); Vector는 자바 버전 1부터 있었던 굉장히 오래된 클래스이기 때문

devoks.tistory.com


 

GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.

프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.

github.com

'CodingTest > Programmers' 카테고리의 다른 글

[프로그래머스, Java][카카오 인턴] 키패드 누르기  (0) 2025.07.21
[프로그래머스, Java][PCCE 기출문제] 10번 / 데이터 분석  (0) 2025.07.21
[프로그래머스, Java] 햄버거 만들기  (0) 2025.07.21
[프로그래머스, Java] 숫자 짝꿍  (0) 2025.07.21
[프로그래머스, Java] 체육복  (0) 2025.07.21
'CodingTest/Programmers' 카테고리의 다른 글
  • [프로그래머스, Java][카카오 인턴] 키패드 누르기
  • [프로그래머스, Java][PCCE 기출문제] 10번 / 데이터 분석
  • [프로그래머스, Java] 햄버거 만들기
  • [프로그래머스, Java] 숫자 짝꿍
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (18) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (79)
        • Programmers (79)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    BufferedWriter
    CS
    effectivejava
    programmers
    codingtest
    json
    java
    BufferedReader
    StringTokenizer
    switch
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[프로그래머스, Java] 크레인 인형뽑기 게임
상단으로

티스토리툴바