Programmers Review

[Lv 1] 햄버거 만들기

hanseongbugi 2024. 6. 8. 15:47

https://school.programmers.co.kr/learn/courses/30/lessons/133502#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제는 스택을 이용하면 쉽게 해결할 수 있다.

햄버거를 만들 수 있는 방법은 뒤에서 부터 1 3 2 1 순서로 재료가 쌓여야한다.

 

따라서 빵인 1이 나오고 스택에 4개 이상 쌓였을 때 뒤에서부터 재료를 4개 꺼내 1 3 2 1순서로 재료가 나오면 햄버거 수를 1증가시킨다.

재료가 나오지 않으면 다시 스택에 넣으면 된다.

 

#include <string>
#include <vector>

using namespace std;
vector<int> box;

int solution(vector<int> ingredient) {
    int answer = 0;
    
    for(int i = 0;i<ingredient.size();i++){
        box.push_back(ingredient[i]);
        if(ingredient[i] == 1 && box.size() > 3){
            int t1 = box.back();
            box.pop_back();
            int t2 = box.back();
            box.pop_back();
            int t3 = box.back();
            box.pop_back();
            int t4 = box.back();
            box.pop_back();
            if(t1 == 1 && t2 == 3 && t3 == 2 && t4 == 1)
                answer++;
            else{
                box.push_back(t4);
                box.push_back(t3);
                box.push_back(t2);
                box.push_back(t1);
            }
            
        }
    }
    return answer;
}