이번에 풀어본 문제는
프로그래머스 크레인 인형뽑기 게임 입니다.
class Solution {
static List<Stack<Integer>> map;
static Stack<Integer> basket;
static int size;
public int solution(int[][] board, int[] moves) {
int answer = 0;
size = board.length;
map = new ArrayList<>();
basket = new Stack<>();
for(int i = 0; i < size; i++)
{
map.add(new Stack<>());
for(int j = size-1; j >= 0; j--)
{
if(board[j][i] > 0) map.get(i).push(board[j][i]);
}
}
for(int i : moves)
{
if(!map.get(i-1).isEmpty())
{
int next = map.get(i-1).pop();
if(!basket.isEmpty() && basket.peek() == next)
{
basket.pop();
answer += 2;
}
else basket.push(next);
}
}
return answer;
}
}
moves 배열로 주어진 커맨드에 맞게 인형을 뽑아 바구니로 옮기는 게임입니다. 같은 모양의 인형이 바구니에 담겼을 때, 인형이 터지며 결괏값에 반영됩니다.
각 인덱스에서 인형을 꺼낼 때, 가장 꼭대기에 있는 인형을 낚아채야 하므로 스택 자료구조를 활용해 보았습니다. 바구니도 마찬가지로 가장 위에있는 인형과 비교해야하므로 스택을 사용합니다. 각 스택이 비어있는지 확인하면서 값을 갱신해 나가면 해결할 수 있습니다.
게임이라 생각하고 푸니까 조금 재밌게 풀었던 것 같습니다. 대놓고 스택 구조가 보여서 조금 간단하게 풀 수 있었습니다.