🖇️ 문제 링크
📝 문제 분석
열마다 하나씩 스택을 만들어서 인형들을 넣어주었다. 바구니가 위에서 쌓이는 구조이기 때문에 스택 자료구조를 이용했다.
바구니에 인형을 넣을 때 가장 위에 있는 인형과 같다면 두 개의 인형을 없애주는 작업을 구현했다.
⌨️ 코드
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int n = board.length;
int ans = 0;
List<Deque<Integer>> list = new ArrayList<>();
for(int i = 0; i <= n; i++)
list.add(new ArrayDeque<>());
for(int i = 0; i < n; i++) {
for(int j = n - 1; j >= 0; j--) {
if(board[j][i] != 0) {
list.get(i + 1).push(board[j][i]);
}
}
}
Deque<Integer> bucket = new ArrayDeque<>();
for(int idx : moves) {
if(!list.get(idx).isEmpty()) {
int next = list.get(idx).pop();
if(!bucket.isEmpty() && bucket.peek() == next) {
ans += 2;
bucket.pop();
} else {
bucket.push(next);
}
}
}
return ans;
}
}
Uploaded by Notion2Tistory v1.1.0