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

홈런볼·2023년 7월 7일
0

프로그래머스

목록 보기
9/36

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/64061

문제접근

연속해서 두 인형이 쌓일때 인형이 삭제되기 때문에 stack 자료구조를 이용

  1. moves 배열을 순회하면서 index-1에 해당하는 요소에 접근
  2. board 배열을 순회하면서 0이 아닌 숫자일 때만 아래 로직을 진행
  3. stack이 비어있는 경우에 stack에 board[k][i-1]를 stack에 push
  4. stack이 비어있지 않으면 stack의 맨 위의 요소를 꺼내 board의 값을 비교한다
  5. 값이 같은 경우 answer를 2씩 증가시켜주고, 스택의 요소를 제거시킨다. 값이 같지 않은 경우에는 해당 값을 stack에 넣어준다
  6. board[k][i-1]를 0으로 초기화 한 후 break로 for문을 빠져나옴

코드

import java.util.Stack;

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

        for(int i : moves){
            for(int k=0;k< board.length;k++){
                if(board[k][i-1] == 0) continue;
                if(stack.empty()) stack.push(board[k][i-1]);
                else{
                    if(board[k][i-1] == stack.peek()){
                        answer+=2;
                        stack.pop();
                    }else{
                        stack.push(board[k][i-1]);
                    }
                }
                board[k][i-1] = 0;
                break;
            }
        }
        return answer;
    }
}

정확성 테스트

0개의 댓글