본문 바로가기
[프로그래머스 C++]/LEVEL 1

[프로그래머스 C++] 신규 아이디 추천

by AKI(JUNI) 2024. 4. 24.

◈ 문제 설명


◈ 문제 설명 링크
코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


◈ 작성 코드

#include <string>
#include <vector>

using namespace std;

string solution(string new_id) 
{
    string answer = "";
    string ans = "";
    for(int i = 0; i < new_id.length(); i++)
    {
        if(new_id[i] >= 'A' && new_id[i] <= 'Z')
        {
            ans += new_id[i] + 32;
        }
        else if(new_id[i] >= 'a' && new_id[i] <= 'z' || (new_id[i] - '0' >= 0 && new_id[i] - '0' <= 9) 
                || new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
        {
            ans += new_id[i];
        }
    }
    
    string a = "";
    for(int i = 0; i < ans.size(); i++)
    {
        if(ans[i] == '.' && ans[i+1] == '.')
        {
            
        }
        else
        {
            a += ans[i];
        }
    }
    
    string b = "";
    if(a[0] == '.' && a[a.size() - 1] != '.')
    {
        for(int i = 1; i < a.size(); i++)
        {
            b += a[i];
        }
    }
    else if(a[0] != '.' && a[a.size() - 1] == '.')
    {
        for(int i = 0; i < a.size() - 1; i++)
        {
            b += a[i];
        }
    }
    else if(a[0] == '.' && a[a.size() - 1] == '.')
    {
        for(int i = 1; i < a.size() - 1; i++)
        {
            b += a[i];
        }
    }
    else
    {
        b = a;
    }
    
    if(b == "")
    {
        b += 'a';
    }
    
    if(b.size() > 15)
    {
        for(int i = 0; i < 15; i++)
        {
            if(i < 14)
            {
                answer += b[i];
            }
            else
            {
                if(b[i] != '.')
                {
                    answer += b[i];
                }
            }
        }
    }
    else
    {
        answer = b;
    }
    
    if(answer.size() < 3)
    {
        while(answer.size() < 3)
        {
            answer += answer[answer.size() - 1];
        }
    }
    
    return answer;
}