import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
Stack<Integer> stack = new Stack<>();
int count=0;
stack.push(0);
int N = board.length;
for(int i=0; i<moves.length; i++){
for(int j=0; j<N; j++){
int n = board[j][moves[i]-1];
if(n!=0){ // 데이터가 있을 경우
if(stack.peek()==n){
stack.pop();
count++;
}else{
stack.push(n);
}
board[j][moves[i]-1]=0; // 데이터 사용했다는 뜻으로 0으로 표시
break; // 한번만 사용하기때문에 반복문 종료
}
}
}
int answer = count*2;// 없어진 인형의 개수이기 때문에 수행한 수의 X2
return answer;
}
}
Stack의 선언 :
java Stack<Data type> stack = new Stack<>()
Data type 예 : Integer, String 등등
stack은 FILO(First In Last Out)이다 처음 들어온 값은 나중에 나간다.
(제일 마지막에 들어온 값이 제일 먼저 나간다.)
stack.peek() : 제일 마지막에 들어간 값을 참조
stack.pop() : 제일 마지막에 들어간 값을 반환 및 stack에서 제거