[JAVA] 프로그래머스 Lv1. 크레인 인형뽑기 게임 - 다른풀이(stack)

2020. 11. 18. 20:54
728x90

import java.util.Stack;

 

class Solution {

    public int solution(int[][] board, int[] moves) {

        int answer = 0;

        Stack<Integer> stack = new Stack<>();

   

        for (int move : moves) {

            for (int j = 0; j < board.length; j++) {

                 if (board[j][move - 1] != 0) {           // board에 인형이 들어있을 때

 

                   // stack이 비어있을 때,

                    if (stack.isEmpty()) {                 

                        stack.push(board[j][move - 1]);

                        board[j][move - 1] = 0;

                        break;

                    }

                    // stack의 상단 요소와 board값이 같을 때

                    if (board[j][move - 1] == stack.peek()) {            // .peek() => 스택의 상단 요소를 반환한다.

                            stack.pop();                                                         // .pop() => 스택의 상단 요소를 반환하고 제거한다.

                            answer += 2;

                    } else

                        stack.push(board[j][move - 1]);                      // stack 상단 요소와 board값이 다를 때, stack에 board값 삽입.

 

                   board[j][move - 1] = 0;                          // board의 인형을 꺼냈으므로 0 대입.

                   break;

               }

            }

        }

        return answer;

    }

}

728x90

BELATED ARTICLES

more