햄버거 만들기

magicdrill·2024년 12월 19일
0

햄버거 만들기

스택을 사용해서 햄버거가 지정된 순서대로 만들었는지 확인한다.
지정된 순서가 맞다면 해당 햄버거를 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;
}

0개의 댓글