반응형

https://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

 

먼저 각 열에서의 인형 갯수를 전처리해준 뒤, 각 열의 인형을 스택에 담아주었습니다.

만약 현재 담는 인형과 스택의 탑에 있는 인형이 같으면 2점씩 올려주었습니다.

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

int solution(vector<vector<int>> board, vector<int> moves) {
    int answer = 0, N = board.size();
    stack<int> basket;
    vector<int> board_len;
    for(int i=0; i<N; i++) {
        int len = 0;
        for(int j=N-1; j>=0 && board[j][i] != 0; j--) {
               len++;
        }
        board_len.push_back(len);
    }
    for(int i=0; i<moves.size(); i++) {
        int move = moves[i] - 1;
        if(board_len[move] <= 0) continue;
        int idx = N - (--board_len[move]) - 1;
        int doll = board[idx][move];
        if(!basket.empty() && doll == basket.top()) {
            basket.pop();
            answer+=2;
        } else {
            basket.push(doll);
        }
    }
    return answer;
}
반응형

'Algorithm' 카테고리의 다른 글

프로그래머스 : 네트워크  (0) 2021.11.13
프로그래머스 : 가사 검색  (0) 2021.11.13
백준 10282 : 해킹  (0) 2021.11.13
백준 2638 : 치즈  (0) 2021.11.13
백준 4485 : 녹색 옷 입은 애가 젤다지?  (0) 2021.11.13

+ Recent posts