https://school.programmers.co.kr/learn/courses/30/lessons/64061
입력받은 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;
}
'coding_test > programmers' 카테고리의 다른 글
lv1 / 실패율 / 카카오 기출 / C++ (0) | 2022.08.03 |
---|---|
lv2 / 거리두기 확인하기 / 카카오 기출 / C++ (0) | 2022.08.03 |
lv1 / 키패드 누르기 / 카카오 기출 / C++ (0) | 2022.07.13 |
lv2 / 문자열 압축 / 카카오 기출 / C++ (0) | 2022.07.13 |
lv1 / 소수 만들기 / C++ (0) | 2022.06.29 |