알고리즘/programmers

프로그래머스 레벨1 크레인 인형뽑기 (JAVA)

dev-jo 2021. 7. 7. 22:21

크레인 인형 뽑기 문제

 

저번 주에 풀은 문제지만

 

주말에 네이버 코테도 보고 하다 보니

 

이제야 올리게 되었다.

 

오늘 풀 문제는

 

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

 

 

크레인 인형 뽑기 게임이다.

 

모든 코드는 GitHub 에 올려놓았다.

 

 

이 문제에서는

 

같은 모양의 인형 두 개가 바구니에 연속해서 쌓이게 되면 두 인형은 터뜨려지면서 바구니에서 사라지게 됩니다.

 

이 부분을 잘 봐야 한다.

 

코드를 봐보자.

import java.util.ArrayList;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;

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

        int max = board.length;

        for (int i = 0; i < moves.length; i++) {
            int num = moves[i];
            int count = 0;
            while (count < max) {
                int click = board[count][num - 1];
                if (click != 0) {
                    list.add(click);
                    board[count][num -1] = 0;
                    break;
                }
                count++;
            }

            if (list.size() > 1) {
                if (list.get(list.size() - 1).equals(list.get(list.size() - 2))) {
                    list.remove(list.size() - 1);
                    list.remove(list.size() - 1);
                    answer++;
                }
            }

        }

        return answer * 2;

    }
}

 

일단 뽑은 거가 들어갈 곳은 제한이 없다고 한다

 

나는 그래서 ArrayList를 선언해 주었다.

 

그리고 moves에서 나온 index값을 board의 길이 만금 들어가면서 0이 아닐 경우 뽑아주고

 

뽑은 인형을 list에 넣어주고

 

뒤에 값으로 같은지 확인해주었다.

 

같다면 list에서 인형을 제거시켜주면 된다.

 

마지막에 answer *2 인 이유는

 

크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.

 

사라진 인형의 개수이므로 

 

터진 개수 * 2를 하면 인형의 개수가 나온다!