coding_test/programmers
lv1 / 크레인 인형 뽑기 게임 / 카카오 기출 / C++
CodeJin
2022. 7. 27. 22:32
https://school.programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
입력받은 board를 스택벡터로 다시 재구성하여, 맨 위에서부터 인형을 가져가기 용이하게 board를 재구성했다. 이후, moves에서 움직이라는대로 움직이며, 바구니에 인형을 담아보고, 맨 위의 인형과 담을 인형이 같으면 터뜨리고 2를 더하면 된다. 자꾸 1만 더해서 왜 틀렸지 했었다....ㅎㅎ
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
int target;
vector<stack<int>> bd(board.size());
stack<int> busket;
// board 전처리
for(int i = board.size() - 1; i >= 0; i--) {
for(int j = 0; j < board[i].size(); j++) {
if(board[i][j]) bd[j].push(board[i][j]);
}
}
// 풀이
for(int i : moves) {
i--;
if(!bd[i].empty()) {
target = bd[i].top();
bd[i].pop();
if(!busket.empty() && target == busket.top()) {
answer+=2;
busket.pop();
}
else busket.push(target);
}
}
return answer;
}