햄버거 만들기

magicdrill·2024년 12월 19일

햄버거 만들기

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