https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 나의 풀이
✅ Stack 스택 ➡︎ 인형뽑기 등과 같이 맨 위의 데이터를 뽑거나, 최근에 삽입한 데이터를 대상으로 뭔가 비교/연산할 때 사용
- 바구니 스택 : bucketSt
- 인형이 들어있는 2차원 배열의 board 각 한줄에 대한 스택 : lineSt ➡︎ 배열 스택

✅ lineSt에 인형 채우기 순서

- 나의 코드
import java.util.Stack;
class Solution {
public int solution(int[][] board, int[] moves) {
int answer = 0;
int n = board.length;
//바구니 스택
Stack<Integer> bucketSt = new Stack<>();
//한줄에 대한 스택 n개 생성
Stack<Integer>[] lineSt = new Stack[n];
for(int i=0; i<n; i++) {
lineSt[i] = new Stack<>();
}
//인형 채우기 _ 바닥부터 채우기 i역순
for(int i=n-1; i>=0; i--) {
for(int j=0; j<n; j++) {
//0은 빈칸
if(board[i][j] != 0) {
lineSt[j].push(board[i][j]);
}
}
}
//System.out.println(lineSt[0]);
//크레인 작동
for(int move : moves) {
//lineSt 비어있지 않으면, pop
if(!lineSt[move-1].isEmpty()) {
int num = lineSt[move-1].pop();
//바구니가 비어있지 않고, 이전 인형 peek 과 같으면
if(!bucketSt.isEmpty() && bucketSt.peek() == num) {
//터짐, answer+2
bucketSt.pop();
answer += 2;
} else {
//바구니에 넣기
bucketSt.push(num);
}
}
}
return answer;
}
}