반응형
처음에는 그냥 vector 이용해서 풀었는데 의도는 stack 이길래 다시 풀었음
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves) {
int answer = 0;
vector<int> v;
int compareNum=0;
for (int i = 0; i < moves.size(); i++) {
for (int j = 0; j < board.size(); j++) {
if (board[j][moves[i]-1] != 0) {
int val = board[j][moves[i] - 1];
v.push_back(val);
//터지는지 확인
board[j][moves[i]-1] = 0;
int end = v.size() - 2;
if (end != -1 && v[end]== val) {
answer += 2;
v.erase(v.end() - 2, v.end());
//지우기
}
compareNum = val;
break;
}
}
}
return answer;
return answer;
}
Stack
#include <vector>
#include <string>
#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++) {
for (int j = 0; j < board.size(); j++) {
if (board[j][moves[i]-1] != 0) {
if (!s.empty() && s.top() == board[j][moves[i] - 1]) {
s.pop();
answer += 2;
}
else {
s.push(board[j][moves[i] - 1]);
}
board[j][moves[i]-1] = 0;
break;
}
}
}
return answer;
}
스택 선언
stack <int> s;
s.top(); // 맨 마지막으로 넣은 값
s.pop(); // 맨 마지막 값 제거
s.push(board[j][moves[i] - 1]); // 값 push
반응형
'CS > 알고리즘' 카테고리의 다른 글
백준 - 마법사 상어와 파이어스톰 20058번 (bfs, 시뮬) (0) | 2021.01.10 |
---|---|
프로그래머스 - 두개 뽑아서 더하기 (0) | 2020.12.30 |
프로그래머스 - 완주하지 못한 선수(multimap) (0) | 2020.12.06 |
알고리즘 C++ 팁 (0) | 2020.10.06 |
백준 17135 캐슬 디펜스 (0) | 2020.10.05 |