스택을 사용해서 햄버거가 지정된 순서대로 만들었는지 확인한다.
지정된 순서가 맞다면 해당 햄버거를 pop하고, 다음 햄버거를 만들고, 아니라면 햄버거 확인을 위해 잠시 pop한 재료들을 다시 push한다.
#include <string>
#include <vector>
#include <iostream>
#include <stack>
using namespace std;
int solution(vector<int> ingredient) {
int answer = 0;
stack<int> hamburger;
int count = 0;
int first, second, third, fourth;
for (int ingredient_for_hamburger : ingredient) {
hamburger.push(ingredient_for_hamburger); // 재료를 스택에 추가
// 스택 크기가 4 이상일 때만 햄버거 확인
if (hamburger.size() >= 4) {
// 스택의 마지막 4개 원소가 [1, 2, 3, 1]인지 확인
fourth = hamburger.top();
hamburger.pop();
third = hamburger.top();
hamburger.pop();
second = hamburger.top();
hamburger.pop();
first = hamburger.top();
hamburger.pop();
if (first == 1 && second == 2 && third == 3 && fourth == 1) {
answer++; // 햄버거 완성
cout << "햄버거 완성 성공\n";
}
else {
// 조건을 만족하지 않으면 다시 스택에 넣기
hamburger.push(first);
hamburger.push(second);
hamburger.push(third);
hamburger.push(fourth);
cout << "햄버거 완성 실패 : " << first << " " << second << " " << third << " " << fourth << "\n";
}
}
}
return answer;
}