알고리즘/programmers

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

장그래 2021. 3. 22. 12:48
반응형

문제 설명

  • 생략

풀이 방법

  • 스택을 이용한 문제이다.
  • 먼저 board 배열을 탐색하여, 인형을 뽑는다.
  • 뽑는 이용을 스택에 push하는데, 비어있을 경우 그냥 push, 아닐 경우 top이랑 비교해서 같으면 pop, 다르면 push 해준다.
  • 정답에 x2를 한 이유는, pop한 개수가 아닌 없어진 인형의 개수이기 때문이다.

알아야되는 개념

  • 스택
  • 반복문
import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> st = new Stack<>();

        for (int i=0;i<moves.length;i++){
            int now = moves[i] - 1;
            for(int j=0;j< board.length;j++){
                if (board[j][now] > 0){
                    if(!st.empty()) {
                        if(st.peek() == board[j][now]) {
                            st.pop();
                            answer++;
                        }
                        else
                            st.push(board[j][now]);
                    }
                    else
                        st.push(board[j][now]);
                    board[j][now] = 0;
                    break;
                }
            }

        }
        return answer * 2;
    }
}

반응형