[백준/BOJ] 백준 21775번 : 가희와 자원 놀이
2022. 2. 2. 23:56ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/21775
해당 숫자를 어떤 사람이 가지고 있는지에 대한 정보를 map에 저장하여 문제를 해결했다
코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <deque>
#include <string>
using namespace std;
int n, t;
vector<int> order;
deque<int> dq;
map<int, string> id_card;
vector<int> have_id(500005, 0); //[사람 번호] = 가지고 있는 연산 카드 id
map<int, int> number_human; //(숫자, 해당 숫자를 가지고 있는 사람 번호)
vector<int> output;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> t;
for (int i = 0; i < t; i++)
{
int input;
cin >> input;
cin.ignore();
order.push_back(input);
}
for (int i = 0; i < t; i++)
{
string input;
getline(cin, input);
int index = input.find(" ", 0);
int id = stoi(input.substr(0, index));
string card = input.substr(index + 1, input.size() - (index + 1));
id_card.insert(make_pair(id, card));
dq.push_back(id);
}
for (int i = 0; i < t; i++)
{
int this_order = order[i];
string this_card;
//연산카드를 가지고 있을때
if (have_id[this_order] != 0)
{
this_card = id_card[have_id[this_order]];
}
//연산카드를 가지고 있지 않을때
else
{
//카드 더미의 맨 위에서 가져와서 가진다
have_id[this_order] = dq.front();
dq.pop_front();
this_card = id_card[have_id[this_order]];
}
output.push_back(have_id[this_order]);
//next일때
if (this_card[0] == 'n')
{
have_id[this_order] = 0; //카드 버리기
}
//acquire일때
else if (this_card[0] == 'a')
{
int index = this_card.find(" ");
int number = stoi(this_card.substr(index + 1, this_card.size() - (index + 1)));
//number숫자를 가진 사람이 없을때
if (number_human.count(number) == 0)
{
number_human.insert(make_pair(number, this_order));
have_id[this_order] = 0; //카드 버리기;
}
}
//release일때
else if (this_card[0] == 'r')
{
int index = this_card.find(" ");
int number = stoi(this_card.substr(index + 1, this_card.size() - (index + 1)));
number_human.erase(number);
have_id[this_order] = 0; //카드 버리기;
}
}
for (int i = 0; i < output.size(); i++)
cout << output[i] << "\n";
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 1013번 : Contact (0) | 2022.02.05 |
---|---|
[백준/BOJ] 백준 21776번 : 가희와 읽기 쓰기 놀이 (0) | 2022.02.05 |
[백준/BOJ] 백준 21773번 : 가희와 프로세스 1 (0) | 2022.02.02 |
[백준/BOJ] 백준 21774번 : 가희와 로그 파일 (0) | 2022.02.02 |
[백준/BOJ] 백준 21772번 : 가희의 고구마 먹방 (0) | 2022.02.02 |