deque로 구현해서 조건에 맞다면 빼나가는 방식으로 구현을 했다가 시간초과가 떠서 바꾼 코드이다. 방식을 알면 상당히 쉽지만 난이도에 비해 생각하기 좀 어려웠던 문제이다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> ingredient)
{
int answer = 0;
vector<int> v = { -1 };
for(int c : ingredient)
{
if(v.back() == 1 && c == 2) v.back() = 12;
else if(v.back() == 12 && c == 3) v.back() = 123;
else if(v.back() == 123 && c == 1) answer++, v.pop_back();
else v.push_back(c);
}
return answer;
}