프로그래머스 - 신규 아이디 추천

well-life-gm·2021년 11월 9일
0

프로그래머스

목록 보기
47/125

프로그래머스 - 신규 아이디 추천

레벨 1짜리 문제로 비교적 쉽다.
빠른 시간내에 구현해내는게 중요할듯하다.
isdigit, islower, tolower 정도만 썼는데, string의 substr, front, back, erase, begin, pop_back 등도 쓰면 더 코드를 짧게 작성할 수 있을 것 같다.

#include <string>
#include <vector>
#include <cstdio>

using namespace std;

string new_id;
string answer = "";
int base_size;
void level1()
{
    for(int i=0;i<new_id.size();i++) 
        answer += tolower(new_id[i]);
}

void level2()
{
    string tmp = "";
    for(int i=0;i<answer.size();i++) {
        if(islower(answer[i]))
            tmp += answer[i];
        else if(isdigit(answer[i]))
            tmp += answer[i];
        else if(answer[i] == '-' || answer[i] == '_' || answer[i] == '.') 
            tmp += answer[i];
    }
    answer = tmp;
}
void level3()
{
    string tmp = "";
    for(int i=0;i<answer.size();i++) {
        if(answer[i] != '.') {
            tmp += answer[i];
            continue;
        }
            
        tmp += answer[i];
        int idx = 1;
        while(1) {
            if(i + idx > answer.size() - 1)
                break;
            if(answer[i + idx] != '.')
                break;
            idx++;
        }
        i = i + idx - 1;
    }
    answer = tmp;
}
void level4()
{
    string tmp = "";
    for(int i=0;i<answer.size();i++) {
        if(i == 0 && answer[0] == '.')
            continue;
        if(i == answer.size() - 1 && answer[answer.size() - 1] == '.')
            continue;
        tmp += answer[i];
    }
    answer = tmp;
}
void level5() 
{
    if(answer.size() != 0) 
        return;
    answer += 'a';
}
void level6()
{
    if(answer.size() < 16)
        return;
    int last = answer[14] == '.' ? 14 : 15;
    string tmp = "";
    for(int i=0;i<last;i++) 
        tmp += answer[i];
    answer = tmp;
}
void level7()
{
    if(answer.size() > 2)
        return;
    char last = answer[answer.size() - 1];
    while(1) {
        if(answer.size() == 3)
            break;
        answer += last;
    }
}

string solution(string input) {
    base_size = input.size();
    new_id = input;
    level1();
    level2();
    level3();
    level4();
    level5();
    level6();
    level7();
    return answer;
}

결과

profile
내가 보려고 만든 블로그

0개의 댓글