개발
[프로그래머스] 신규 아이디 추천 (C++)
yun000
2024. 11. 29. 13:40
문제
https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
단순 구현 문제이다
코드
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
#include<iostream>
using namespace std;
string solution(string new_id)
{
string answer = "";
// 1단계
for (char& c : new_id)
{
c = tolower(c);
}
// 2단계
for(int i=0;i<new_id.length();i++)
{
char c=new_id[i];
if(c=='.' || c=='_' || c=='-') continue;
if((int)c>='a' && (int)c<='z') continue;
if((int)c>='0' && (int)c<='9') continue;
new_id.erase(remove(new_id.begin(), new_id.end(), c), new_id.end());
i--;
}
// 3단계
for (size_t i = 0; i < new_id.size(); ++i)
{
if (new_id[i] == '.' && i + 1 < new_id.size() && new_id[i + 1] == '.')
{
new_id.erase(i, 1); --i;
}
}
// 4단계
if (!new_id.empty() && new_id.front() == '.')
{
new_id.erase(0, 1);
}
if (!new_id.empty() && new_id.back() == '.')
{
new_id.pop_back();
}
// 5단계
if (new_id.empty())
{
new_id = "a";
}
// 6단계
if (new_id.size() >= 16)
{
new_id = new_id.substr(0, 15);
if (new_id.back() == '.') { new_id.pop_back(); }
}
// 7단계
while (new_id.size() < 3)
{
new_id += new_id.back();
}
return new_id;
}