Level 1. 크레인 인형뽑기 게임
큐의 배열을 이용해 인형 뽑기 머신을 클래스로 추상화시켜 해결했다.
어려운 문제는 아니었고 카카오에서 내는 시뮬레이션 문제 중에 재밌는 것들이 많은 것 같다.
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
class ClawMachine
{
private:
vector<queue<int>> board;
public:
ClawMachine(vector<vector<int>>& board) : board(vector<queue<int>>(board.size()))
{
for (vector<int> row : board)
for (int i = 0; i < row.size(); ++i)
if (row[i]) this->board[i].emplace(row[i]);
}
int pull(int move)
{
queue<int>& que = board[move - 1];
if (que.empty())
{
return -1;
}
else
{
int doll = que.front(); que.pop();
return doll;
}
}
};
int solution(vector<vector<int>> board, vector<int> moves)
{
int answer = 0;
stack<int> dolls;
ClawMachine clawMachine(board);
for (int move : moves)
{
int doll = clawMachine.pull(move);
if (!dolls.empty() && doll == dolls.top())
dolls.pop(), answer += 2;
else if (doll != -1)
dolls.emplace(doll);
}
return answer;
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 1. 부족한 금액 계산하기 (0) | 2023.03.06 |
---|---|
Level 1. 신규 아이디 추천 (0) | 2023.03.05 |
Level 1. 키패드 누르기 (0) | 2023.03.03 |
Level 1. [1차] 다트 게임 (0) | 2023.03.02 |
Level 1. 체육복 (0) | 2023.03.01 |