문제 링크 : 신규 아이디 추천
문자열을 다루는 문제이고 주어진 조건들을 차근차근 풀어나가면 쉽게 풀 수 있는 문제이다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string new_id) {
string answer = "";
// 1단계
transform(new_id.begin(), new_id.end(), new_id.begin(), ::tolower);
// 2단계
string temp = "";
for(int i=0 ; i<new_id.size() ; i++) {
if((new_id[i]>='a' && new_id[i]<='z') || (new_id[i]>='0' && new_id[i]<='9') || new_id[i]=='-' || new_id[i]=='_' || new_id[i]=='.') {
temp += new_id[i];
}
}
new_id = temp;
// 3단계
temp = "";
bool check = false;
for(int i=0 ; i<new_id.size() ; i++) {
if(new_id[i]=='.') {
if(check) continue;
else {
temp += new_id[i];
check = true;
}
} else {
temp += new_id[i];
check = false;
}
}
new_id = temp;
// 4단계
if(new_id[0]=='.') new_id = new_id.substr(1);
if(new_id[new_id.size()-1]=='.') new_id = new_id.substr(0, new_id.size()-1);
// 5단계
if(new_id=="") new_id = "a";
// 6단계
if(new_id.size()>=16) {
new_id = new_id.substr(0, 15);
if(new_id[new_id.size()-1]=='.') new_id = new_id.substr(0, new_id.size()-1);
}
// 7단계
while(new_id.size()<=2) {
new_id += new_id[new_id.size()-1];
}
answer = new_id;
return answer;
}