[C++로 풀이] 신규 아이디 추천⭐
카테고리: Programmers
태그: Coding Test Algorithm
📌 신규 아이디 추천
난이도 ⭐
🚀 문제
🚀 내 풀이 ⭕
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
// 1 단계
for(int i = 0; i < new_id.length(); i++)
if (new_id[i] >= 'A' && new_id[i] <= 'Z')
new_id[i] = tolower(new_id[i]);
// 2 단계
for(int i = 0; i < new_id.length(); ) {
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] == '.')
{
i++;
continue;
}
new_id.erase(new_id.begin() + i);
}
// 3 단계
for(int i = 1; i < new_id.length(); ){
if (new_id[i] == '.' && new_id[i - 1] == '.'){
new_id.erase(new_id.begin() + i);
continue;
}
else i++;
}
// 4 단계
if (new_id.front() == '.') new_id.erase(new_id.begin());
if (new_id.back() == '.') new_id.erase(new_id.end() - 1);
// 5 단계
if (new_id.length() == 0)
new_id = "a";
// 6 단계
if (new_id.length() >= 16){
while(new_id.length() != 15){
new_id.erase(new_id.begin() + 15);
}
}
if (new_id.back() == '.') new_id.erase(new_id.end() - 1);
// 7 단계
if (new_id.length() <= 2){
while(new_id.length() != 3){
new_id += new_id.back();
}
}
return new_id;
}
2, 3단계 for문의 i++
가 중괄호 안에 있는 것 주의! (erase 하는 경우 i++
되지 않게하기 위해서였다. 뒤에 있는게 한 칸 땡겨 올테니 i++
할 필요가 없다.)
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기