[C++]프로그래머스 신규 아이디 추천
문제는 다음과 같다.
오늘은 프로그래머스 신규 아이디 추천 문제를 풀어보도록 하자. Level 1 문제로 그냥 구현만 하면 되는 문제였다. 다만, string에 관한 개념은 갖추고 있어야 한다. string의 함수 중 erase, front(), back() 등 강력한 함수들을 사용하면 편해진다는 것을 알게해주는 문제 같다.
[코드]
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer="";
//1단계
int new_id_len = new_id.length();
for(int i=0;i<new_id_len;i++){
if(new_id[i]>='A' && new_id[i]<='Z'){
new_id[i] += 32;
}
}
//2단계
for(int i=0;i<new_id_len;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] == '.')){
answer += new_id[i];
}
}
//3단계
int answer_len = answer.length();
for(int i=1;i<answer_len;){
if(answer[i] == '.' && answer[i-1]== '.'){
answer.erase(answer.begin()+i);
continue;
}
i++;
}
//4단계
if(answer.front() == '.'){
answer.erase(answer.begin());
}
if(answer.back() == '.'){
answer.erase(answer.end()-1);
}
//5단계
if(answer.empty()){
answer += 'a';
}
//6단계
if(answer.length() >= 16){
answer.resize(15);
if(answer.back() == '.'){
answer.erase(answer.end()-1);
}
}
//7단계
while(answer.length() <= 2){
answer += answer[answer.length()-1];
}
return answer;
}