https://programmers.co.kr/learn/courses/30/lessons/64061
스택 이용
import java.util.Stack;
class Solution {
public static int solution(int[][] board, int[] moves) {
//스택 : 뽑아놓은 인형들
int answer = 0; // 사라진 인형의 갯수
Stack<Integer> pick = new Stack<>();
for( int i : moves ) {
for( int j = 0; j < board[i-1].length ; j++) {
if(board[j][i-1] != 0 ) {
//1. 크레인이 도달할때마다 맨 위의 인형을 하나씩 뽑아서 pick에 담기
if(pick.isEmpty()) { // pick에 인형이 없으면 그냥 넣기
pick.push(board[j][i-1] );
}else {
//2. 새로 뽑은 인형과 pick의 맨 위 인형이 같은거면 인형을 삭제
if (pick.peek()== board[j][i-1]) {
pick.pop();
//2.1 인형을 삭제 후 사라진 인형갯수 + 2 (뽑은 것과 기존것 2개의 인형이 사라짐);
answer = answer +2;
}else {
//3. 새로 뽑은 인형과 pick의 맨 위 인형이 다르면 그냥 pick에 쌓기
pick.push(board[j][i-1] );
}
}
board[j][i-1] = 0;
break;
}
}
}
return answer;
}
}
반응형