본문 바로가기
알고리즘/프로그래머스

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

by binghe819 2020. 7. 3.

 

https://programmers.co.kr/learn/courses/30/lessons/64061

 

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

[[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

 

1. 풀이


처음 문제를 보고 스택이 바로 떠오는 문제인 듯 싶다.

 

하지만 꼭 스택의 특성을 이용하지 않고, 리스트를 사용해도 풀이가 가능하다.

 

여기서는 리스트를 사용하였다.

 

moves 반복문을 돌면서 해당 열에 인형이 있다면 장바구니에 담아주면 되는 쉬운 문제이다.

 

 

2. 코드


import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;

        ArrayList<Integer> basket = new ArrayList<>();

        for(int move : moves){
            // 인형 뽑기
            for(int i = 0; i < board.length; i++){
                // 인형이 있다면
                if(board[i][move-1] > 0){
                    basket.add(board[i][move-1]); // 장바구니에 인형 추가
                    board[i][move-1] = 0; // 보드에서 인형 제거.
                    break;
                }
            }
            // 장바구니에 겹치는 인형 제거
            if(basket.size() > 1 && basket.get(basket.size()-1).equals(basket.get(basket.size()-2))){
                answer+=2;
                // remove하면 사이즈가 바뀌기 때문에 꼭 size()-2부터 없애줘야한다.
                basket.remove(basket.size()-2); 
                basket.remove(basket.size()-1);
            }
        }

        return answer;
    }
}

 

 

댓글