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줄의 인형을 가져와 스택에 넣고 같으면 값을 제거하는 식으로 진행
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;
}
}