import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
Map<Integer, Stack<Integer>> map = new HashMap<>();
int idx = 1;
for(int i = 0; i<board[0].length; i++) {
Stack<Integer> stack = new Stack<>();
for(int j = board.length-1; j>=0; j--) {
if(board[j][i] == 0) {
continue;
}
stack.add(board[j][i]);
}
map.put(idx++, stack);
}
Stack<Integer> answerStack = new Stack<>();
for(int i =0; i<moves.length; i++) {
if(map.get(moves[i]).isEmpty()) {
continue;
}else {
Integer movesPop = map.get(moves[i]).pop();
if(!answerStack.isEmpty()) {
if(answerStack.peek() == movesPop) {
answerStack.pop();
answer += 2;
}else {
answerStack.add(movesPop);
}
}else {
answerStack.add(movesPop);
}
}
}
return answer;
}
}
- 거의 2주만에 온것 같습니다.
- 2주동안 고민한 문제는 아니고 한 번 트라이했다가 여러 사정으로 다시 도전했는데 성공했네요
- 인형뽑기 게임로직입니다. 먼저 주어지는 인형이들어있는 배열을 스텍으로 바꾸어주었습니다. 안들어있는 0개는 넣지 않아서팝과 픽을 이용할 수 있도록 했습니다.
- 꺼내는 인형의 배열로 반복문을 돌려서 인형을 꺼낼수 있으면 꺼내고 꺼낸다음에는 이미 꺼낸 정답배열의 맨 위 인형과 비교해서 같으면 두개다 없애버리는 로직을 구현했습니다.
- 스텍을 활용하는 문제가 아닐까 싶습니다. 재밌었네요. 끝.