Stack<Integer> stack = new Stack<>();
for (int i = 0; i < moves.length; i++) {
for (int j = 0; j < board.length; j++) {
moves의 길이만큼 for문을 돌림
board의 길이만큼 for문을 돌림
if(board[j][moves[i]-1] != 0) {
if(!stack.isEmpty() && stack.peek() == board[j][moves[i]-1]) {
stack.pop();
answer += 2;
만약 board[j][moves - 1]
가 0이라면 인형이 없는 것이므로 넘어감
0이 아니라면 stack이 비어있지 않고 stack의 가장 윗 요소가 board[j][moves[i]-1]
가 같은지 비교
같다면 stack애 pop을 하여 요소를 반환하고 2만큼 answer애 더해줌
else {
stack.push(board[j][moves[i]-1]);
}
[j][moves[i]-1]
를 pushboard[j][moves[i]-1] = 0;
break;
import java.util.Stack; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack<Integer> stack = new Stack<>(); for (int i = 0; i < moves.length; i++) { for (int j = 0; j < board.length; j++) { if(board[j][moves[i]-1] != 0) { if(!stack.isEmpty() && stack.peek() == board[j][moves[i]-1]) { stack.pop(); answer += 2; } else { stack.push(board[j][moves[i]-1]); } board[j][moves[i]-1] = 0; break; } } } return answer; } }