백준/실버

[백준] 실버4-수학숙제 C++ 2870번

taene_ 2025. 2. 23. 22:00

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

 

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

int N;
string s, ret;
vector<string> v;

bool cmp(string a, string b)
{
	if (a.size() == b.size())
		return a < b;
	return a.size() < b.size();
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> s;
		ret = "";

		for (int j = 0; j < s.size(); j++)
		{
			if (s[j] >= '0' && s[j] <= '9')
			{
				ret += s[j];
			}
			else
			{
				if (ret.size())
				{
					int k = 0;
					for (; ret[k] == '0'; k++);
					if (k == ret.size())
						k--;
					v.push_back(ret.substr(k));
					ret = "";
				}
			}
		}

		if (ret.size())
		{
			int k = 0;
			for (; ret[k] == '0'; k++);
			if (k == ret.size())
				k--;
			v.push_back(ret.substr(k));
			ret = "";
		}
	}

	sort(v.begin(), v.end(), cmp);
	for (string i : v)
		cout << i << '\n';

	return 0;
}