코딩테스트/프로그래머스
[레벨 1] 신규 아이디 추천
marmelo12
2021. 10. 27. 14:46
반응형
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
// . 은 처음과 끝 x 연속사용x
string answer = "";
for (auto it = new_id.begin(); it != new_id.end();)
{
if (*it >= 'A' && *it <= 'Z')
*it = *it + 32;
else if ((*it >= 'a' && *it <= 'z'))
++it;
else if ((*it >= '0' && *it <= '9'))
++it;
else if (*it != '-' && *it != '_' && *it != '.')
it = new_id.erase(it);
else if (it == new_id.begin() && *it == '.')
it = new_id.erase(it);
else if (*it == '.' && *(it - 1) == '.')
it = new_id.erase(it);
else
++it;
}
int len = new_id.size();
if (len != 0 && new_id[len - 1] == '.')
{
new_id.resize(len - 1);
len = len - 1;
}
if (len >= 16)
{
new_id.resize(15);
len = 15;
if (new_id[14] == '.')
{
new_id.resize(14);
len = 14;
}
}
else if (len <= 2)
{
if (len == 0) // 빈 문자열
{
new_id += 'a';
len = 1;
}
char data = new_id[len - 1];
for (int i = len; i < 3; ++i)
new_id.push_back(data);
}
return new_id;
}
반응형