코딩테스트/프로그래머스

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

GAEBAL 2022. 5. 16. 00:00
728x90

문제

https://programmers.co.kr/learn/courses/30/lessons/64061?language=java

 

 

풀이

레벨 1 문제라 쉽게 풀었음

board[][]를 ArrayList랑 Stack으로 구현해도 될 것 같긴한데 그냥 배열로 해주는게 오히려 더 간편한 듯?
바구니는 쉽게 Stack을 사용했음!

코드보면 쉽게 이해할 수 있을거임 ㅎㅎ

ㄱㄱ

 

 

 

코드

// 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임
// https://programmers.co.kr/learn/courses/30/lessons/64061?language=java

package PROGRAMMERS.level1;

import java.util.Stack;

public class Num64061_크레인인형뽑기게임 {
    private static class Solution{
        public int solution(int[][] board, int[] moves) {
            int answer = 0;

            int N = board.length;
            Stack<Integer> stack = new Stack<>();

            for (int i = 0; i < moves.length; i++) {
                int move = moves[i] - 1;
                int temp = -1;
                for (int j = 0; j < N; j++) {
                    // 가장 위에 있는 인형이 몇번인지 확인하는 작업
                    if (board[j][move] != 0) {
                        temp = board[j][move];
                        board[j][move] = 0;
                        break; // 인형이 있으면 탈출, 없으면 temp는 그대로 -1
                    }
                }

                if (temp > 0) { // temp가 양수면 인형이 있었다는 뜻
                    if (stack.isEmpty()) { // 바구니가 비었으면 일단 인형 추가
                        stack.push(temp);
                    } else { // 바구니가 비어있지 않으면
                        if (stack.peek() == temp) { // 바구니 맨 위의 인형이 현재 뽑은 인형과 같으면
                            stack.pop(); // 바구니 맨 위의 인형을 없애주고
                            answer += 2; // 정답 += 2
                        } else { // 바구니 맨 위의 인형이 현재 뽑은 인형과 다르면
                            stack.push(temp); // 바구니에 인형 추가
                        }
                    }
                }
                temp = -1; // temp 초기화
            }

            return answer;
        }

        public static void main(String[] args) {
            Solution sol = new Solution();

            System.out.println(sol.solution(new int[][]{{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}}, new int[]{1, 5, 3, 5, 1, 2, 1, 4}));
        }
    }
}
728x90