📕알고리즘 문제/📝Baekjoon

[백준] 실버5 : (2890) 카약

주으기 2024. 11. 10. 20:48
728x90
반응형

문제: https://www.acmicpc.net/problem/2890

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int R, C;
string Str;
vector<vector<int>> Team;

int Cmp1(const vector<int>& a, const vector<int>& b) { return a[1] > b[1]; }
int Cmp2(const vector<int>& a, const vector<int>& b) { return a[0] < b[0]; }

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> R >> C;

	for (int i = 1; i <= R; ++i)
	{
		bool IsValid = false;
		char Line;
		int Count = 0;
		cin >> Str;

		for (const auto& i : Str)
		{
			if (i == '.') Count++;
			if (i > 48 && i < 58)
			{
				Line = i - '0';
				IsValid = true;
				break;
			}
		}

		if (IsValid) Team.push_back({ Line, Count, 0 });
	}
	sort(Team.begin(), Team.end(), Cmp1);

	int Rank = 1, Count = 0;
	for (auto& i : Team)
	{
		if (i[1] >= Count)
		{
			i[2] = Rank;
			Count = i[1];
		}
		else
		{
			Count = i[1];
			i[2] = ++Rank;
		}
	}
	sort(Team.begin(), Team.end(), Cmp2);

	for (const auto& i : Team)
		cout << i[2] << "\n";
}

 

 

 

 

 

728x90
반응형