๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„(Level 1)

by ์•ˆ์ฃผํ˜• 2022. 4. 10.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„

[[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> basket;
    for(int move:moves){
        int pick_num = 0;
        for(int i=0; i<board.size(); i++){
            if(board[i][move-1]!=0){
                pick_num = board[i][move-1];
                board[i][move-1]=0;
                break;
            }
        }
        if(pick_num>0&&!basket.empty()){
            if(basket.top()==pick_num){
                basket.pop();
                answer+=2;
            }
            else basket.push(pick_num);
        }
        else if(basket.empty()){
            basket.push(pick_num);
        }
        
    }
    return answer;
}

 

ํ’€์ด(19๋ถ„)

ํฌ๊ฒŒ ๋ณต์žกํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. move์œ„์น˜์˜ depth๋ฅผ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ์ธํ˜•์ด ์žˆ์„ ๋•Œ ๋ฝ‘์€ ๋‹ค์Œ ์ด์ „ stack์˜ top์— ์žˆ์„ ๊ฒฝ์šฐ ํ„ฐํŠธ๋ฆฌ๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€