본문 바로가기
프로그래머스

신규 아이디 C++

by paysmile 2021. 6. 28.

https://programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

 

#include <string>
#include <vector>

using namespace std;

string solution(string new_id) {
    string answer = "";
    string tmp;
    
    //1단계
    for(int i=0; i<new_id.size(); i++){
        if(isupper(new_id[i])) answer += tolower(new_id[i]);
        else    answer += new_id[i];
    }
    
    //2단계
    for(int i=0; i<answer.size(); i++){
        if(islower(answer[i]) || isdigit(answer[i]) || answer[i] == '-' || answer[i] == '_' || answer[i] == '.') tmp += answer[i];   
    }
    
    answer="";
    //3단계
    for(int i=0; i<tmp.size(); i++){
        if(tmp[i] == '.'){
            i+=1;
            answer += '.';
            while(tmp[i] == '.'&& i <tmp.size())    i+=1;
        }
        if(i <tmp.size())
            answer += tmp[i];
    }
    
    //4단계
    if(answer[0] == '.')
        answer= answer.substr(1);
    
    if(answer[answer.size()-1] == '.')  
        answer = answer.substr(0,answer.size()-1);
        
    //5단계
    if(answer.size()== 0)   answer ="a";
    
    //6단계
    if(answer.size() >=16) {
        answer = answer.substr(0,15);
        if(answer[answer.size()-1] == '.')  answer = answer.substr(0,answer.size()-1);
    }
    
    //7단계
    if(answer.size() <=2)  {
        while(answer.size()<3)
            answer += answer[answer.size()-1];
    }
    
    return answer;
}

'프로그래머스' 카테고리의 다른 글

순위 검색 C++  (0) 2021.07.01
메뉴 리뉴얼 C++  (0) 2021.06.30
가장 먼 노드 C++  (0) 2021.04.22
기둥과 보 설치 C++  (0) 2020.11.09
자물쇠와 열쇠 C++  (0) 2020.11.03