[BAEKJOON] 20006번 랭킹전 대기열

2024. 4. 1. 14:00·Algorithm/구현, 시뮬레이션

https://www.acmicpc.net/problem/20006

 

20006번: 랭킹전 대기열

모든 생성된 방에 대해서 게임의 시작 유무와 방에 들어있는 플레이어들의 레벨과 아이디를 출력한다. 시작 유무와 플레이어의 정보들은 줄 바꿈으로 구분되며 레벨과 아이디는 한 줄에서 공백

www.acmicpc.net

문제조건
  1. 플레이어가 입장을 신청하였을 때 매칭이 가능한 방이 없다면 새로운 방을 생성하고 입장시킨다. 이떄 해당 방에는 처음 입장한 플레이어의 레벨을 기준으로 -10부터 +10까지 입장 가능하다.
  2. 입장 가능한 방이 있다면 입장시킨 후 방의 정원이 모두 찰 때까지 대기시킨다.
  3. 이때 입장이 가능한 방이 여러 개라면 먼저 생성된 방에 입장한다.
  4. 방의 정원이 모두 차면 게임을 시작시킨다.

먼저 입력을 받으면서 방을 만들어줬다. 방을 만드는 규칙은 간단하다.


  1. 현재까지 생성된 방을 모두 탐색하며, 매칭이가능하다면 다음 상대로 넘어간다.
  2. 현재까지 생성된 방을 모두 탐색했는데, 매칭가능한 방이 없다면 방을 새로만든다.
  3. idx로 마지막으로 생성된 방의 포인터를 저장한다. 
소스코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


int p, m;
bool cmp(pair<int, string> a, pair<int, string> b) {
	return a.second < b.second;
}


vector<pair<int, string>> room[301];
int main() {
	cin >> p >> m;
	int idx = 0;
	for (int i = 0; i < p; i++) {
		bool check = false;
		int l;
		string n;
		cin >> l >> n;
		//방 만들기
		for (int j = 0; j < idx; j++) {
			if (room[j].front().first <= l + 10 && room[j].front().first >= l - 10 && room[j].size() < m) {
				check = true;
				room[j].push_back({ l,n });
				break;
			}
		}
		if (!check) {
			room[idx].push_back({ l,n });
			idx++;
		}
	}
	
	for (vector<pair<int,string>> a : room) {
		sort(a.begin(), a.end(), cmp);
		if (a.size() == 0) break;
		if (a.size() == m ) cout << "Started!" << '\n';
		else cout << "Waiting!" << '\n';
		for (int i = 0; i < a.size(); i++) cout << a[i].first << " " << a[i].second << '\n';
	}
}

 

 

'Algorithm > 구현, 시뮬레이션' 카테고리의 다른 글

[BAEKJOON] 3190번 뱀  (0) 2024.04.06
[BAEKJOON] 13460번 구슬 탈출 2  (0) 2024.04.05
[BAEKJOON] 22233번 가희와 키워드  (0) 2024.03.25
[BAEKJOON] 8979번 올림픽  (0) 2024.03.20
[BAEKJOON] 10431번 줄세우기  (1) 2024.03.19
'Algorithm/구현, 시뮬레이션' 카테고리의 다른 글
  • [BAEKJOON] 3190번 뱀
  • [BAEKJOON] 13460번 구슬 탈출 2
  • [BAEKJOON] 22233번 가희와 키워드
  • [BAEKJOON] 8979번 올림픽
Ls._.Rain
Ls._.Rain
안되면 될때까지 삽질했던 기록
  • Ls._.Rain
    Ls{Diary}
    Ls._.Rain
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Github (2)
      • Spring (51)
        • Batch Programming (13)
        • 결제 (4)
        • 대용량 트래픽 (32)
        • OpenAI (0)
        • Security (0)
        • WebSocket (0)
        • JPA (1)
      • Algorithm (67)
        • DFS (6)
        • BFS (6)
        • Dynamic Programming (10)
        • Brute Force (4)
        • Binary Search (6)
        • 구현, 시뮬레이션 (15)
        • Stack (1)
        • Greedy (4)
        • Priority_Queue (2)
        • Back Tracking (3)
        • Geometry (2)
        • SCC (1)
        • 투포인터 (4)
        • 최대유량 (1)
        • 정렬 (1)
      • OS (0)
      • DevOps (15)
        • AWS (11)
        • Docker (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • hELLO· Designed By정상우.v4.10.0
Ls._.Rain
[BAEKJOON] 20006번 랭킹전 대기열
상단으로

티스토리툴바