Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study

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

알고리즘/C++ 문제풀이

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

^_^? 2021. 7. 6. 17:34
 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

 

 

<풀이>

더보기

#include <string>
#include <vector>
#include <locale>
using namespace std;

string solution(string new_id) {
    string answer = "";
    string ch_id = "";
    
    //1-2단계
    for(int i=0; i<new_id.size(); i++){
        if(isalpha(new_id[i]) != 0){
            ch_id +=tolower(new_id[i]);
           
        }else if(isdigit(new_id[i]) == 1){
             ch_id+=new_id[i];
        }
        else if(new_id[i] == '-' || new_id[i] == '_' || new_id[i] =='.'){
                ch_id+=new_id[i];
        }
         
     }   
    
    //3단계
    for(int i = 1; i < ch_id.length(); i++){
        if (ch_id[i] == '.' && ch_id[i - 1] == '.'){
            ch_id.erase(i, 1); 
            i--; 
        }
        
    }
    
    //4단계
    if(ch_id.front() == '.'){
        ch_id.erase(ch_id.begin());
    }else if(ch_id.back() == '.'){
        ch_id.pop_back();
    }
    
    //5단계
    if(ch_id.size() == 0) {
        ch_id+='a';
    }   
    
    //6단계
    if(ch_id.size() >=16) {
        ch_id = ch_id.substr(0, 15);
    } 
    if(ch_id.back() == '.'){
        ch_id.pop_back();
    }
    
    //7단계
    
    char last = ch_id[ch_id.size()-1];
    while(ch_id.size()<3){
            ch_id+=last;
    }
    
    
    answer += ch_id;
    return answer;
}