[프로그래머스] 랭킹전 대기열
2022. 9. 27. 17:38ㆍTIL💡/Algorithms
https://www.acmicpc.net/problem/20006
적당한 자료구조에 주어진 조건에 따라 잘~ 구현하면 된다.
방 정보를 담는 vector를 쓰는데, 한 방에 담는 구성원들은 이름에 따라 정렬될 수 있도록 set을 쓴다.
#include <iostream>
#include <vector>
#include <set>
using namespace std;
vector<int> ppl;
vector<set<pair<string,int>>> rooms;
int main() {
int p, m;
cin >> p >> m;
int level;
string player;
while(p--) {
cin >> level >> player;
bool finished = false;
for(int i = 0;i < rooms.size();i++){
auto & r = rooms[i];
if(r.size() >= m) continue;
int room_level = ppl[i];
if(room_level - 10 <= level && level <= room_level + 10) {
r.insert({player, level});
finished = true;
break;
}
}
if(!finished) {
ppl.push_back(level);
set<pair<string,int>> new_room ={{player, level}};
rooms.push_back(new_room);
}
}
for(auto r: rooms) {
if(r.size() == m) {
printf("Started!\n");
}
else {
printf("Waiting!\n");
}
for(auto p: r) {
cout << p.second << " " << p.first << "\n";
}
}
}
'TIL💡 > Algorithms' 카테고리의 다른 글
[백준] IF문 좀 대신 써줘 (0) | 2022.09.27 |
---|---|
[백준] 2512번: 예산 (0) | 2022.09.27 |
[프로그래머스] 등산코스 정하기 (1) | 2022.09.27 |
[백준] 2110번: 공유기 설치 (0) | 2022.09.24 |
[백준] 20922번: 겹치는 건 싫어 with 투 포인터 (0) | 2022.09.23 |