본문 바로가기
IT/알고리즘

56] 프로그래머스 크레인 인형뽑기 게임

by 깻잎쌈 2020. 11. 13.
반응형

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

 

5 X 5 아니고

N X N  

 

인형을 바구니에 넣을 때 공이 사라진다면

2개씩 사라진다.  

 

 

#Vector 버전

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

int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0;
  vector<int> basket;
    
    for(int i =0; i<moves.size(); i++ ){
        //해당 위치 
        for(int j = 0; j <board.size(); j++)
            if(board[j][moves[i]-1] > 0  ){
                if(!basket.empty() && basket[basket.size()-1]== board[j][moves[i]-1]){
                   answer += 2;
                   basket.pop_back(); // 있던 거 빼주기 
                 
                }
                else
                   basket.push_back(board[j][moves[i]-1]);
                
                board[j][moves[i]-1] = 0;
                break;
            }
    }
    
    return answer;
}

 

#Stack 버전

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

int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0;
    stack<int>basket;
    
    for(int i =0; i<moves.size(); i++ ){
        //해당 위치 
        for(int j = 0; j <board.size(); j++)
            if(board[j][moves[i]-1] > 0  ){
                if(!basket.empty() && basket.top()== board[j][moves[i]-1]){
                    answer += 2;      
                    basket.pop();
                }
                else            
                   basket.push(board[j][moves[i]-1]);
                
                board[j][moves[i]-1] = 0;
                break;
            }
    }
    
    return answer;
}
반응형

댓글