bdfgdfg

[레벨 1] 신규 아이디 추천 본문

코딩테스트/프로그래머스

[레벨 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;
}
반응형
Comments