https://school.programmers.co.kr/learn/courses/30/lessons/64061
이 문제는 삽입 시 같은 인형을 2개 발견하면 2개의 인형을 터트리는 문제이다.
따라서 인형을 삽입하는 공간을 vector로 선언하여 맨 뒤의 인형이 무엇인지 판단해야한다.
또한 인형을 삽입하기 전에 같은 인형이 바구니의 맨 위에 있는지 확인한다.
바구니가 비어있지 않고 바구니의 맨 위가 삽입할 인형과 같다면 인형 2개를 터트리고 맨 위에 있는 인형을 바구니에서 제거한다.
같은 인형이 아닌 경우 바구니의 맨 위에 인형을 삽입한다.
#include <string>
#include <vector>
using namespace std;
vector<int> barket;
int N,M;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
N = board.size();
M = moves.size();
for(int i = 0;i<M;i++){
int crane = 0;
int move = moves[i];
while(crane < N){
if(board[crane][move-1]>0){
if(!barket.empty()&&barket.back() == board[crane][move-1]){
answer += 2;
barket.pop_back();
}
else
barket.push_back(board[crane][move-1]);
board[crane][move-1] = 0;
break;
}
crane += 1;
}
}
return answer;
}
'Programmers Review' 카테고리의 다른 글
[Lv 1] 모의고사 (0) | 2024.06.01 |
---|---|
[Lv 1] K번째수 (1) | 2024.05.30 |
[Lv 1] 키패드 누르기 (0) | 2024.05.30 |
[Lv 1] 이상한 문자 만들기 (0) | 2024.05.27 |
[Lv 2] 뒤에 있는 큰 수 찾기 (0) | 2024.05.27 |