상수에게 전해지는 재료의 정보를 나타내는 정수 배열 ingredient가 주어졌을 때, 상수가 포장하는 햄버거의 개수를 return하는 solution 함수를 작성하는 문제이다.
ingredient에 저장된 값을 순서대로 stack에 넣으면서, stack에 저장된 값의 수가 4이상이면 위에서부터 4번째까지의 값을 꺼내 [1, 2, 3, 1]이면 answer에 1을 더하고, [1, 2, 3, 1]이 아니라면 다시 stack에 push한다.
import java.util.Stack;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < ingredient.length; i++) {
stack.push(ingredient[i]);
if (stack.size() >= 4) {
int bread2 = stack.pop();
int meat = stack.pop();
int veg = stack.pop();
int bread1 = stack.pop();
if (bread1 == 1 && bread2 == 1 && veg == 2 && meat == 3) {
answer++;
} else {
stack.push(bread1);
stack.push(veg);
stack.push(meat);
stack.push(bread2);
}
}
}
return answer;
}
}