programmers

2019 카카오 개발자 겨울 인턴십크레인 > 인형뽑기 게임

윤만석 2022. 7. 28. 16:29

lv1 문제입니다.

스텍을 이용합니다.

가로로 인형들이 주어진 board는 불편해서 세로로 배열을 하나 새로 만들었습니다.

#include <string>
#include <vector>

using namespace std;

int solution(vector<vector<int>> board, vector<int> moves) {
    vector<vector<int>>mp(30);

    while(!board.empty()){
        vector<int>temp=board.back();
        board.pop_back();
        for(int i=0;i<temp.size();i++){
            if(temp[i]==0)continue;
            mp[i].push_back(temp[i]);
        }
    }

    int answer = 0;
    vector<int>st;
    for(int i=0;i<moves.size();i++){
        if(mp[moves[i]-1].empty())continue;
        int top=mp[moves[i]-1].back();        
        mp[moves[i]-1].pop_back();
        if(st.empty()){
            st.push_back(top);
            continue;
        }
        if(st.back()==top){
            st.pop_back();
            answer+=2;
            continue;
        }
        st.push_back(top);
    }    
    return answer;
}