본문 바로가기

Algorithm/카카오기출

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

문제

 

풀이

#include <string>
#include <vector>

using namespace std;

int solution(vector<vector<int>> board, vector<int> moves) {
    int count = 0;
    vector<int> box = {};
    int num = 10;
    
    for( int i=0; i<moves.size(); i++){
        for(int j=0; j<board.size(); j++){
            if(board[j][moves[i]-1] != 0){
                num = moves[i]-1;
                if(!box.empty() && box.back() == board[j][num]){
                    box.pop_back();
                    count+=2;
                }
                else box.push_back(board[j][num]);
                board[j][num] = 0;
                break;
            }
        }
    }
    return count; // 사라진 인형의 갯수
}

 

 

 


 

다른 사람 풀이

#include <string>
#include <vector>
#include <stack>

using namespace std;

int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0;
    stack<int> s;
    for(int i=0;i<moves.size();i++)
    {
        int check = moves[i] - 1;
        for(int j=0;j<board.size();j++)
        {
            if(board[j][check] != 0)
            {
                if(!s.empty() && s.top() == board[j][check])
                {
                    s.pop();
                    answer += 2;
                }
                else
                    s.push(board[j][check]);
                board[j][check] = 0;
                break;
            }
        }
    }
    return answer;
}

나는 바구니를 vector를 이용해 구현했지만, 이 코드는 stack을 이용했다.

인터넷에 검색해 본 결과 둘의 사용방법은 비슷했다.

하지만 vector는 배열로도 사용할 수 있기 때문에, stack을 사용하면 바구니의 기능을 예상할 수 있어 코드의 가독성이 더 좋았을 것이라고 생각한다.

 

 

 


https://www.acmicpc.net/board/view/8783

 

글 읽기 - stack vs vector

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net