관리 메뉴

기억을 위한 기록들

[프로그래머스 lv 1 ] - 크레인 인형뽑기 게임 본문

Coding Test - cpp/Stack, Queue

[프로그래머스 lv 1 ] - 크레인 인형뽑기 게임

에드윈H 2021. 4. 20. 12:46

programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

#include <string>
#include <vector>
#include <stack>
using namespace std;

int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0;
    stack<int> st;
    
    for(int j=0;j<moves.size();j++) //뽑는 순서대로 진행
    {
        int curCrain=moves[j]; //뽑아야할 크레인 위치
        int num=-1;
        for(int i=0;i<board[curCrain-1].size();i++) //크레인위치에서 제일 위에 있는 번호 뽑기
        {
            if(board[i][curCrain-1]!=0)   //0이 아니라면 뽑아야 할 수
            {
                num=board[i][curCrain-1];
                board[i][curCrain - 1] = 0;
               // find=true;
                break;
            }
        }
        if(num!=-1)
        {
            if(!st.empty())
            {
                if(st.top()==num)
                {
                    st.pop();
                    answer+=2;
                }else
                {
                    st.push(num);
                }
            }else
            {
                st.push(num);
            }
        }
    }
    return answer;
}