카테고리 없음

2021 카카오 블라인드 채용 - 신규 아이디 추천 (Lv.1)

그린푸딩 2023. 6. 7. 23:07
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

문제에서 요구하는대로 차례대로 구현하면된다. 주의할점은 숫자가 0~9부터 범위라는것!!

 

#include <string>
#include <vector>
#include <iostream>

using namespace std;


string solution(string new_id) {
    string answer = "";
    string tmp="";

    //소문자로 바꾸기 
    for(int i=0;i<new_id.size();i++){
      if(new_id[i]>='A'&&new_id[i]<='Z'){
         new_id[i]='a'+(new_id[i]-'A');
      }  
    }
    
    for(int i=0;i<new_id.size();i++){ // - _ . 소문자 외 제거하기 
      if(new_id[i]=='-' ||new_id[i]=='_' || new_id[i]=='.' || new_id[i]>='a' && new_id[i]<='z'|| new_id[i]>='0' && new_id[i]<='9'){
         tmp+=new_id[i]; 
      }       
    }
    new_id=tmp; 
    
    //.두개 이상  -> 마침표 한개
    tmp=""; 
    int cnt=0;
    for(int i=0;i<new_id.size();i++){
        if(new_id[i]=='.')cnt++;
        else{
            if(cnt>=1){
                tmp+='.';
                cnt=0;
            }
            tmp+=new_id[i];
        }
    }
    new_id=tmp;
    // 맨처음 끝 . 삭제
    tmp="";
    for(int i=0;i<new_id.size();i++){
        if((i==0 || i==new_id.size()-1)&& new_id[i]=='.')continue;
        tmp+=new_id[i];
    }
    new_id=tmp;
    //빈문자열 
    if(new_id=="")new_id="a"; 
    
    // 16자 이상이면 15문자 제외 나머지 모두 제거, 끝이 .이면 .까지 제거 
    if(new_id.size()>=16){
       tmp="";
       for(int i=0;i<14;i++){
           tmp+=new_id[i]; 
       }
       if(new_id[14]!='.')tmp+=new_id[14];
       new_id=tmp;   
    }
    
    //길이가 2장 이하이면 마지막 문제 3될때까지 반복 
    if(new_id.size()==1){
        for(int i=0;i<2;i++)new_id+=new_id[0];
    }
    if(new_id.size()==2){
        new_id+=new_id[1];
    }
   
    return new_id;
}
728x90
반응형