ingredient
상수에게 전해지는 재료의 정보를 나타내는 정수 배열 | [2, 1, 1, 2, 3, 1, 2, 3, 1] | 1 ≤ ingredient의 길이 ≤ 1,000,000, ingredient의 원소는 1, 2, 3 중 하나의 값이며, 순서대로 빵, 야채, 고기를 의미
상수가 포장하는 햄버거의 개수를 return
Stack에 현재 순서를 저장하고, 마지막 순서라면 스택에서 빼낸다
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
Stack<Integer> stack = new Stack<>();
int p = 0, ans = 0;
for(int ing : ingredient){
if(ing == 1 && p == 3){
for(int i=0; i<3; i++){
stack.pop();
}
ans+=1;
p = stack.size()!=0?stack.peek():0;
continue;
}
if(ing == p+1)
p++;
else if (ing != p)
p=0;
stack.add(p);
}
return ans;
}
}
class Solution {
public int solution(int[] ingredient) {
int[] stack = new int[ingredient.length];
int p = 0, ans = 0;
for (int i : ingredient) {
stack[p++] = i;
if (3 < p && stack[p - 1] == 1 && stack[p - 2] == 3 && stack[p - 3] == 2 && stack[p - 4] == 1) {
p -= 4;
ans++;
}
}
return ans;
}
}
Tip : Stack 라이브러리보다 배열과 포인터변수로 구현하는 것이 훨씬 효율적이다. (덮어쓰기 가능)