정리글 : https://velog.io/@1108mango/JAVA-Stack%EA%B3%BC-Queue
Stack<Integer> a;
HashMap<Integer, Stack> boardHM = new HashMap<Integer, Stack>();
for(문){
a = new Stack<Integer>();
for(문){
a에 여러가지 아이템 push
}
boardHM.put(i, a)
// 새로운 Stack을 선언해서 각각 아이템 다르게 넣은 Stack을 HashMap에 저장할 수 있음
}
Stack 함수에서 pop이나 peek 함수의 return 형태는 Object 인데, 이걸 int형으로 받고 싶으면 어렵게 생각하지 말고 (int) 로 강제변환
2차원 어레이의 값을 index 규칙을 정해서 자유자재로 접근할 수 있어야 함
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int garbage = 0;
Stack<Integer> a;
HashMap<Integer, Stack> boardHM = new HashMap<Integer, Stack>();
Stack<Integer> basket = new Stack<Integer>();
int underItem = 0;
for(int i = 0; i < board[0].length; i++){
a = new Stack<Integer>();
for(int j = board.length - 1; j >= 0; j--){
if (board[j][i] != 0)
a.push(board[j][i]);
}
boardHM.put(i+1, a);
}
for(int i = 0; i < moves.length; i++){
if(!(boardHM.get(moves[i]).empty())){
basket.push((int)boardHM.get(moves[i]).pop());
//System.out.println("empty아니야 : "+(int)boardHM.get(moves[i]).pop());
if(underItem == (int)basket.peek()){
basket.pop();
basket.pop();
answer++;
}
if(!basket.empty())
underItem = (int)basket.peek();
else
underItem = 0;
}
}
return answer * 2;
}
}
-> 처음 프로그래머스 시작했을 때 Stack을 몰라서 못푼 문제인데 1단계 약 20문제 풀고나니, exception 없이 한번에 통과해서 아주 뿌듯