크레인 인형뽑기 게임 - JAVA

2025. 2. 21. 20:40백준 및 프로그래머스/프로그래머스 LV 1

문제 설명

 

문제 요약

1.문제는 굉장히 간단하다. moves에 있는 배열에 맞게 위에 있는 인형을 뽑고 바구니에 넣으면 된다.

EX) Moves가 [1,2,3,4,5,3] 이런식으로 있다고 생각해보자. 그럼 1번째 맨 위부터 탐색해서 인형이 있으면 바구니에 넣으면 된다. 그 다음 2번째 위, 3번째 위 이런식으로 순서대로 탐색하고 바구니에 넣는다.

 

2.하지만 여기서 핵심은 똑같은 인형이 위에 있다면 그 인형은 터뜨려줍니다. 예를들어 바구니에 ) 1,2,3,3,4,5 이렇게 있다고 생각해보면 3,3이 터질 수 있습니다. 그럼 1,2,4,5 남을 것입니다. 이러한 방식으로 터트리고 끝날 때까지 몇 개가 터지면 되는지 확인하는 문제입니다.

 

제한 사항 및 입출력 예

* 1,5,3,5,1,2,1,4 대로 탐색하면 총 4개의 인형이 터질 수 있다는 결과가 나옵니다.

 

 

전체 코드 

import java.util.*;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        int n = board.length;
        int count = moves.length;
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i<count; i++){
            int next = moves[i] - 1; 
            
            for(int j = 0; j<n; j++){
                if(board[j][next] > 0){
                    list.add(board[j][next]);
                    board[j][next] = 0;
                    break;
                }
            }
            if(list.size()>1){
                for (int k = 0; k<list.size()-1; k++){
                    if(list.get(k) == list.get(k+1)){
                        list.subList(k,k+2).clear();
                        answer+=2;
                    }
                }
            }
            
        }
        // System.out.println(list);
        
        return answer;
    }
}