😭 바구니에 있는 인형의 수를 구하는 줄 알고 삽질 20분간 했다. 역시 문제를 잘읽자!
vector[]
로 각 index에 따른 인형의 수를 넣어줬다.push_back
, pop_back
을 쓰기 위해서 마지막 배열부터 값을 집어넣어줬고, 0은 넣지 않았다.stack
으로 만들어줬다. (가장 마지막에 들어온 값과 비교해야 하기 때문)answer+=2
stack에 인형 push
#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(vector<vector<int>> board, vector<int> moves)
{
int answer = 0;
vector<int> v[31];
stack<int> result;
for (int i = board.size() - 1; i >= 0; i--)
{
for (int j = 0; j < board[i].size(); j++)
{
if (board[i][j] == 0)
continue;
v[j + 1].push_back(board[i][j]);
}
}
for (int i = 0; i < moves.size(); i++)
{
if (v[moves[i]].size() == 0)
continue;
else
{
if (result.size() != 0 && result.top() == v[moves[i]].back())
{
result.pop();
answer += 2;
}
else
result.push(v[moves[i]].back());
v[moves[i]].pop_back();
}
}
return answer;
}
v의 size
가 0인 경우에는 아무것도 하지 않고 continue 시켜준다.쉬운 문제였다. 따라만 하면 풀리는 문제. 딱 기업 코테의 1번에 나올만한 문제.