https://programmers.co.kr/learn/courses/30/lessons/72410

string solution(string new_id) {
	if (new_id == "") {
		return "aaa";
	}
	string answer = new_id;
	// phase 1
	for (int i = 0; i < answer.size(); ++i) {
		answer[i] = tolower(answer[i]);
	}
	// phase 2
	answer.erase(std::remove_if(answer.begin(), answer.end(),
		[&](const auto& c) {
		return !(isalpha(c)) && !(isdigit(c)) && c != '-' && c != '_' && c != '.';
	}), answer.end());
	
	// phase 2 다른 방법. #include <string.h>
	string temp = "";
    for(const auto& c : answer){
        if(isdigit(c) || isalpha(c) || strchr(("-_."), c))
        {
            temp += c;
        }
    }
    answer = temp;
	
	//phase 3
	char c = '.';
	auto itr = unique(answer.begin(), answer.end(),
		[&](const auto& c1, const auto& c2) {return c1 == c && c1 == c2; }
	);
	answer.erase(itr, answer.end());

	//phase 4
	if (answer[answer.size() - 1] == '.') {
		answer.pop_back();
	}
	if (answer[0] == '.') {
		answer.erase(answer.begin());
	}

	//phase 5
	if (answer == "") {
		answer = "a";
	}

	//phase 6
	if (answer.size() >= 16) {
		answer = answer.substr(0, 15);
	}
	if (answer[answer.size() - 1] == '.') answer.pop_back();

	//phase 7
	if (answer.size() <= 2) {
		while (answer.size() <3)
		{
			answer.push_back(answer.back());
		}
	}

	return answer;
}