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;
}