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

fsm12·2023년 7월 7일
0

프로그래머스

목록 보기
31/57
post-thumbnail

문제링크

문제 이해

[ 입력형태 / 조건 ]

board
2차원 배열 | [[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]] | "5 x 5" 이상 "30 x 30" 이하, 0은 빈 칸 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미

moves
1차원 배열 | [1,5,3,5,1,2,1,4] | 1 이상 1,000 이하

[ 문제 ]

크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return

[ 풀이 ]

Stack을 이용해 맵에 move줄의 인형을 가져와 스택에 넣고 같으면 값을 제거하는 식으로 진행



코드

> [성공] 1차 시도 : Stack 이용

  • 생각한 풀이 그대로 구현
class Solution {
    public int solution(int[][] board, int[] moves) {
        int N = board.length, p = 0, moveCnt = 0;
        int[] stack = new int[N*N]; 
        
        int get = 0;
        for(int move : moves){
            for(int i=0; i<N; i++){
                get = board[i][move-1];
                if(get != 0){
                    board[i][move-1] = 0;
                    stack[p++] = get;
                    if(1 < p && get == stack[p-2])
                        p-=2;
                    moveCnt++;
                    break;
                }
            }
        }
        return moveCnt - p;
    }
}



0개의 댓글