출제 링크 : programmers.co.kr/learn/courses/30/lessons/64061
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
List<Queue<Integer>> boardQue = new ArrayList<Queue<Integer>>();
Stack<Integer> out = new Stack<Integer>();
for (int i = 0; i < board.length; i++) {
Queue<Integer> dammy = new LinkedList<Integer>();
// System.out.println("===========" + i + "번째=========");
for (int j = 0; j < board.length; j++) {
if (board[j][i] != 0) {
dammy.add(board[j][i]);
// System.out.println(board[j][i]);
}
}
// System.out.println("======================");
boardQue.add(dammy);
}
for (int i = 0; i < moves.length; i++) {
int num = moves[i] - 1;
// System.out.println("input : " + boardQue.get(num).peek());
if (out.isEmpty()) {
out.add(boardQue.get(num).poll());
} else if (!boardQue.get(num).isEmpty()) {
// System.out.println("===========================");
// System.out.println("out peek : " + out.peek());
// System.out.println("boardQue peek : " + boardQue.get(num).peek());
if (out.peek() == boardQue.get(num).peek()) {
out.pop();
boardQue.get(num).poll();
answer += 2;
} else {
int temp = boardQue.get(num).poll();
// System.out.println("저장 num : " + temp);
out.add(temp);
// System.out.println("다르므로 out 저장");
}
// System.out.println("===========================");
}
}
return answer;
}
}